<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8"/>
    <title>Test Report</title>
    <link href="assets/style.css" rel="stylesheet" type="text/css"/></head>
  <body onLoad="init()">
    <script>/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
 * You can obtain one at http://mozilla.org/MPL/2.0/. */


function toArray(iter) {
    if (iter === null) {
        return null;
    }
    return Array.prototype.slice.call(iter);
}

function find(selector, elem) {
    if (!elem) {
        elem = document;
    }
    return elem.querySelector(selector);
}

function find_all(selector, elem) {
    if (!elem) {
        elem = document;
    }
    return toArray(elem.querySelectorAll(selector));
}

function sort_column(elem) {
    toggle_sort_states(elem);
    var colIndex = toArray(elem.parentNode.childNodes).indexOf(elem);
    var key;
    if (elem.classList.contains('numeric')) {
        key = key_num;
    } else if (elem.classList.contains('result')) {
        key = key_result;
    } else {
        key = key_alpha;
    }
    sort_table(elem, key(colIndex));
}

function show_all_extras() {
    find_all('.col-result').forEach(show_extras);
}

function hide_all_extras() {
    find_all('.col-result').forEach(hide_extras);
}

function show_extras(colresult_elem) {
    var extras = colresult_elem.parentNode.nextElementSibling;
    var expandcollapse = colresult_elem.firstElementChild;
    extras.classList.remove("collapsed");
    expandcollapse.classList.remove("expander");
    expandcollapse.classList.add("collapser");
}

function hide_extras(colresult_elem) {
    var extras = colresult_elem.parentNode.nextElementSibling;
    var expandcollapse = colresult_elem.firstElementChild;
    extras.classList.add("collapsed");
    expandcollapse.classList.remove("collapser");
    expandcollapse.classList.add("expander");
}

function show_filters() {
    var filter_items = document.getElementsByClassName('filter');
    for (var i = 0; i < filter_items.length; i++)
        filter_items[i].hidden = false;
}

function add_collapse() {
    // Add links for show/hide all
    var resulttable = find('table#results-table');
    var showhideall = document.createElement("p");
    showhideall.innerHTML = '<a href="javascript:show_all_extras()">Show all details</a> / ' +
                            '<a href="javascript:hide_all_extras()">Hide all details</a>';
    resulttable.parentElement.insertBefore(showhideall, resulttable);

    // Add show/hide link to each result
    find_all('.col-result').forEach(function(elem) {
        var collapsed = get_query_parameter('collapsed') || 'Passed';
        var extras = elem.parentNode.nextElementSibling;
        var expandcollapse = document.createElement("span");
        if (extras.classList.contains("collapsed")) {
            expandcollapse.classList.add("expander")
        } else if (collapsed.includes(elem.innerHTML)) {
            extras.classList.add("collapsed");
            expandcollapse.classList.add("expander");
        } else {
            expandcollapse.classList.add("collapser");
        }
        elem.appendChild(expandcollapse);

        elem.addEventListener("click", function(event) {
            if (event.currentTarget.parentNode.nextElementSibling.classList.contains("collapsed")) {
                show_extras(event.currentTarget);
            } else {
                hide_extras(event.currentTarget);
            }
        });
    })
}

function get_query_parameter(name) {
    var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
    return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}

function init () {
    reset_sort_headers();

    add_collapse();

    show_filters();

    sort_column(find('.initial-sort'));

    find_all('.sortable').forEach(function(elem) {
        elem.addEventListener("click",
                              function(event) {
                                  sort_column(elem);
                              }, false)
    });

};

function sort_table(clicked, key_func) {
    var rows = find_all('.results-table-row');
    var reversed = !clicked.classList.contains('asc');
    var sorted_rows = sort(rows, key_func, reversed);
    /* Whole table is removed here because browsers acts much slower
     * when appending existing elements.
     */
    var thead = document.getElementById("results-table-head");
    document.getElementById('results-table').remove();
    var parent = document.createElement("table");
    parent.id = "results-table";
    parent.appendChild(thead);
    sorted_rows.forEach(function(elem) {
        parent.appendChild(elem);
    });
    document.getElementsByTagName("BODY")[0].appendChild(parent);
}

function sort(items, key_func, reversed) {
    var sort_array = items.map(function(item, i) {
        return [key_func(item), i];
    });

    sort_array.sort(function(a, b) {
        var key_a = a[0];
        var key_b = b[0];

        if (key_a == key_b) return 0;

        if (reversed) {
            return (key_a < key_b ? 1 : -1);
        } else {
            return (key_a > key_b ? 1 : -1);
        }
    });

    return sort_array.map(function(item) {
        var index = item[1];
        return items[index];
    });
}

function key_alpha(col_index) {
    return function(elem) {
        return elem.childNodes[1].childNodes[col_index].firstChild.data.toLowerCase();
    };
}

function key_num(col_index) {
    return function(elem) {
        return parseFloat(elem.childNodes[1].childNodes[col_index].firstChild.data);
    };
}

function key_result(col_index) {
    return function(elem) {
        var strings = ['Error', 'Failed', 'Rerun', 'XFailed', 'XPassed',
                       'Skipped', 'Passed'];
        return strings.indexOf(elem.childNodes[1].childNodes[col_index].firstChild.data);
    };
}

function reset_sort_headers() {
    find_all('.sort-icon').forEach(function(elem) {
        elem.parentNode.removeChild(elem);
    });
    find_all('.sortable').forEach(function(elem) {
        var icon = document.createElement("div");
        icon.className = "sort-icon";
        icon.textContent = "vvv";
        elem.insertBefore(icon, elem.firstChild);
        elem.classList.remove("desc", "active");
        elem.classList.add("asc", "inactive");
    });
}

function toggle_sort_states(elem) {
    //if active, toggle between asc and desc
    if (elem.classList.contains('active')) {
        elem.classList.toggle('asc');
        elem.classList.toggle('desc');
    }

    //if inactive, reset all other functions and add ascending active
    if (elem.classList.contains('inactive')) {
        reset_sort_headers();
        elem.classList.remove('inactive');
        elem.classList.add('active');
    }
}

function is_all_rows_hidden(value) {
  return value.hidden == false;
}

function filter_table(elem) {
    var outcome_att = "data-test-result";
    var outcome = elem.getAttribute(outcome_att);
    class_outcome = outcome + " results-table-row";
    var outcome_rows = document.getElementsByClassName(class_outcome);

    for(var i = 0; i < outcome_rows.length; i++){
        outcome_rows[i].hidden = !elem.checked;
    }

    var rows = find_all('.results-table-row').filter(is_all_rows_hidden);
    var all_rows_hidden = rows.length == 0 ? true : false;
    var not_found_message = document.getElementById("not-found-message");
    not_found_message.hidden = !all_rows_hidden;
}
</script>
    <h1>20210910152917.html</h1>
    <p>Report generated on 10-Sep-2021 at 15:29:30 by <a href="https://pypi.python.org/pypi/pytest-html">pytest-html</a> v2.1.1</p>
    <h2>Environment</h2>
    <table id="environment">
      <tr>
        <td>JAVA_HOME</td>
        <td>D:\Program Files\Java\jdk1.8.0_151</td></tr>
      <tr>
        <td>Packages</td>
        <td>{"pluggy": "0.13.1", "py": "1.10.0", "pytest": "5.4.3"}</td></tr>
      <tr>
        <td>Platform</td>
        <td>Windows-10-10.0.19041-SP0</td></tr>
      <tr>
        <td>Plugins</td>
        <td>{"html": "2.1.1", "metadata": "1.11.0", "parallel": "0.1.0"}</td></tr>
      <tr>
        <td>Python</td>
        <td>3.8.5</td></tr></table>
    <h2>Summary</h2>
    <p>3 tests ran in 9.90 seconds. </p>
    <p class="filter" hidden="true">(Un)check the boxes to filter the results.</p><input checked="true" class="filter" data-test-result="passed" disabled="true" hidden="true" name="filter_checkbox" onChange="filter_table(this)" type="checkbox"/><span class="passed">0 passed</span>, <input checked="true" class="filter" data-test-result="skipped" disabled="true" hidden="true" name="filter_checkbox" onChange="filter_table(this)" type="checkbox"/><span class="skipped">0 skipped</span>, <input checked="true" class="filter" data-test-result="failed" hidden="true" name="filter_checkbox" onChange="filter_table(this)" type="checkbox"/><span class="failed">3 failed</span>, <input checked="true" class="filter" data-test-result="error" disabled="true" hidden="true" name="filter_checkbox" onChange="filter_table(this)" type="checkbox"/><span class="error">0 errors</span>, <input checked="true" class="filter" data-test-result="xfailed" disabled="true" hidden="true" name="filter_checkbox" onChange="filter_table(this)" type="checkbox"/><span class="xfailed">0 expected failures</span>, <input checked="true" class="filter" data-test-result="xpassed" disabled="true" hidden="true" name="filter_checkbox" onChange="filter_table(this)" type="checkbox"/><span class="xpassed">0 unexpected passes</span>
    <h2>Results</h2>
    <table id="results-table">
      <thead id="results-table-head">
        <tr>
          <th class="sortable result initial-sort" col="result">Result</th>
          <th class="sortable" col="name">Test</th>
          <th class="sortable numeric" col="duration">Duration</th>
          <th>Links</th></tr>
        <tr hidden="true" id="not-found-message">
          <th colspan="4">No results found. Try to check the filters</th></tr></thead>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">test_shou_user.py::test_002</td>
          <td class="col-duration">4.06</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;urllib3.connection.HTTPConnection object at 0x000001A21AF49790&gt;<br/><br/>    def _new_conn(self):<br/>        &quot;&quot;&quot;Establish a socket connection and set nodelay settings on it.<br/>    <br/>        :return: New socket connection.<br/>        &quot;&quot;&quot;<br/>        extra_kw = {}<br/>        if self.source_address:<br/>            extra_kw[&quot;source_address&quot;] = self.source_address<br/>    <br/>        if self.socket_options:<br/>            extra_kw[&quot;socket_options&quot;] = self.socket_options<br/>    <br/>        try:<br/>&gt;           conn = connection.create_connection(<br/>                (self._dns_host, self.port), self.timeout, **extra_kw<br/>            )<br/><br/>D:\Python38\lib\site-packages\urllib3\connection.py:169: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>address = (&#x27;localhost&#x27;, 9000), timeout = None, source_address = None<br/>socket_options = [(6, 1, 1)]<br/><br/>    def create_connection(<br/>        address,<br/>        timeout=socket._GLOBAL_DEFAULT_TIMEOUT,<br/>        source_address=None,<br/>        socket_options=None,<br/>    ):<br/>        &quot;&quot;&quot;Connect to *address* and return the socket object.<br/>    <br/>        Convenience function.  Connect to *address* (a 2-tuple ``(host,<br/>        port)``) and return the socket object.  Passing the optional<br/>        *timeout* parameter will set the timeout on the socket instance<br/>        before attempting to connect.  If no *timeout* is supplied, the<br/>        global default timeout setting returned by :func:`socket.getdefaulttimeout`<br/>        is used.  If *source_address* is set it must be a tuple of (host, port)<br/>        for the socket to bind as a source address before making the connection.<br/>        An host of &#x27;&#x27; or port 0 tells the OS to use the default.<br/>        &quot;&quot;&quot;<br/>    <br/>        host, port = address<br/>        if host.startswith(&quot;[&quot;):<br/>            host = host.strip(&quot;[]&quot;)<br/>        err = None<br/>    <br/>        # Using the value from allowed_gai_family() in the context of getaddrinfo lets<br/>        # us select whether to work with IPv4 DNS records, IPv6 records, or both.<br/>        # The original create_connection function always returns all records.<br/>        family = allowed_gai_family()<br/>    <br/>        try:<br/>            host.encode(&quot;idna&quot;)<br/>        except UnicodeError:<br/>            return six.raise_from(<br/>                LocationParseError(u&quot;&#x27;%s&#x27;, label empty or too long&quot; % host), None<br/>            )<br/>    <br/>        for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):<br/>            af, socktype, proto, canonname, sa = res<br/>            sock = None<br/>            try:<br/>                sock = socket.socket(af, socktype, proto)<br/>    <br/>                # If provided, set socket level options before connecting.<br/>                _set_socket_options(sock, socket_options)<br/>    <br/>                if timeout is not socket._GLOBAL_DEFAULT_TIMEOUT:<br/>                    sock.settimeout(timeout)<br/>                if source_address:<br/>                    sock.bind(source_address)<br/>                sock.connect(sa)<br/>                return sock<br/>    <br/>            except socket.error as e:<br/>                err = e<br/>                if sock is not None:<br/>                    sock.close()<br/>                    sock = None<br/>    <br/>        if err is not None:<br/>&gt;           raise err<br/><br/>D:\Python38\lib\site-packages\urllib3\util\connection.py:96: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>address = (&#x27;localhost&#x27;, 9000), timeout = None, source_address = None<br/>socket_options = [(6, 1, 1)]<br/><br/>    def create_connection(<br/>        address,<br/>        timeout=socket._GLOBAL_DEFAULT_TIMEOUT,<br/>        source_address=None,<br/>        socket_options=None,<br/>    ):<br/>        &quot;&quot;&quot;Connect to *address* and return the socket object.<br/>    <br/>        Convenience function.  Connect to *address* (a 2-tuple ``(host,<br/>        port)``) and return the socket object.  Passing the optional<br/>        *timeout* parameter will set the timeout on the socket instance<br/>        before attempting to connect.  If no *timeout* is supplied, the<br/>        global default timeout setting returned by :func:`socket.getdefaulttimeout`<br/>        is used.  If *source_address* is set it must be a tuple of (host, port)<br/>        for the socket to bind as a source address before making the connection.<br/>        An host of &#x27;&#x27; or port 0 tells the OS to use the default.<br/>        &quot;&quot;&quot;<br/>    <br/>        host, port = address<br/>        if host.startswith(&quot;[&quot;):<br/>            host = host.strip(&quot;[]&quot;)<br/>        err = None<br/>    <br/>        # Using the value from allowed_gai_family() in the context of getaddrinfo lets<br/>        # us select whether to work with IPv4 DNS records, IPv6 records, or both.<br/>        # The original create_connection function always returns all records.<br/>        family = allowed_gai_family()<br/>    <br/>        try:<br/>            host.encode(&quot;idna&quot;)<br/>        except UnicodeError:<br/>            return six.raise_from(<br/>                LocationParseError(u&quot;&#x27;%s&#x27;, label empty or too long&quot; % host), None<br/>            )<br/>    <br/>        for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):<br/>            af, socktype, proto, canonname, sa = res<br/>            sock = None<br/>            try:<br/>                sock = socket.socket(af, socktype, proto)<br/>    <br/>                # If provided, set socket level options before connecting.<br/>                _set_socket_options(sock, socket_options)<br/>    <br/>                if timeout is not socket._GLOBAL_DEFAULT_TIMEOUT:<br/>                    sock.settimeout(timeout)<br/>                if source_address:<br/>                    sock.bind(source_address)<br/>&gt;               sock.connect(sa)<br/><span class="error">E               ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝，无法连接。</span><br/><br/>D:\Python38\lib\site-packages\urllib3\util\connection.py:86: ConnectionRefusedError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;urllib3.connectionpool.HTTPConnectionPool object at 0x000001A21A480850&gt;<br/>method = &#x27;POST&#x27;, url = &#x27;/sys/login&#x27;<br/>body = &#x27;username=%E5%B0%8F%E7%9A%AE%E5%9C%A8%E6%AD%A4&amp;password=123&amp;role=member&#x27;<br/>headers = {&#x27;User-Agent&#x27;: &#x27;python-requests/2.25.1&#x27;, &#x27;Accept-Encoding&#x27;: &#x27;gzip, deflate&#x27;, &#x27;Accept&#x27;: &#x27;*/*&#x27;, &#x27;Connection&#x27;: &#x27;keep-alive&#x27;, &#x27;Content-Length&#x27;: &#x27;70&#x27;, &#x27;Content-Type&#x27;: &#x27;application/x-www-form-urlencoded&#x27;}<br/>retries = Retry(total=0, connect=None, read=False, redirect=None, status=None)<br/>redirect = False, assert_same_host = False<br/>timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None<br/>release_conn = False, chunked = False, body_pos = None<br/>response_kw = {&#x27;decode_content&#x27;: False, &#x27;preload_content&#x27;: False}<br/>parsed_url = Url(scheme=None, auth=None, host=None, port=None, path=&#x27;/sys/login&#x27;, query=None, fragment=None)<br/>destination_scheme = None, conn = None, release_this_conn = True<br/>http_tunnel_required = False, err = None, clean_exit = False<br/><br/>    def urlopen(<br/>        self,<br/>        method,<br/>        url,<br/>        body=None,<br/>        headers=None,<br/>        retries=None,<br/>        redirect=True,<br/>        assert_same_host=True,<br/>        timeout=_Default,<br/>        pool_timeout=None,<br/>        release_conn=None,<br/>        chunked=False,<br/>        body_pos=None,<br/>        **response_kw<br/>    ):<br/>        &quot;&quot;&quot;<br/>        Get a connection from the pool and perform an HTTP request. This is the<br/>        lowest level call for making a request, so you&#x27;ll need to specify all<br/>        the raw details.<br/>    <br/>        .. note::<br/>    <br/>           More commonly, it&#x27;s appropriate to use a convenience method provided<br/>           by :class:`.RequestMethods`, such as :meth:`request`.<br/>    <br/>        .. note::<br/>    <br/>           `release_conn` will only behave as expected if<br/>           `preload_content=False` because we want to make<br/>           `preload_content=False` the default behaviour someday soon without<br/>           breaking backwards compatibility.<br/>    <br/>        :param method:<br/>            HTTP request method (such as GET, POST, PUT, etc.)<br/>    <br/>        :param url:<br/>            The URL to perform the request on.<br/>    <br/>        :param body:<br/>            Data to send in the request body, either :class:`str`, :class:`bytes`,<br/>            an iterable of :class:`str`/:class:`bytes`, or a file-like object.<br/>    <br/>        :param headers:<br/>            Dictionary of custom headers to send, such as User-Agent,<br/>            If-None-Match, etc. If None, pool headers are used. If provided,<br/>            these headers completely replace any pool-specific headers.<br/>    <br/>        :param retries:<br/>            Configure the number of retries to allow before raising a<br/>            :class:`~urllib3.exceptions.MaxRetryError` exception.<br/>    <br/>            Pass ``None`` to retry until you receive a response. Pass a<br/>            :class:`~urllib3.util.retry.Retry` object for fine-grained control<br/>            over different types of retries.<br/>            Pass an integer number to retry connection errors that many times,<br/>            but no other types of errors. Pass zero to never retry.<br/>    <br/>            If ``False``, then retries are disabled and any exception is raised<br/>            immediately. Also, instead of raising a MaxRetryError on redirects,<br/>            the redirect response will be returned.<br/>    <br/>        :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int.<br/>    <br/>        :param redirect:<br/>            If True, automatically handle redirects (status codes 301, 302,<br/>            303, 307, 308). Each redirect counts as a retry. Disabling retries<br/>            will disable redirect, too.<br/>    <br/>        :param assert_same_host:<br/>            If ``True``, will make sure that the host of the pool requests is<br/>            consistent else will raise HostChangedError. When ``False``, you can<br/>            use the pool on an HTTP proxy and request foreign hosts.<br/>    <br/>        :param timeout:<br/>            If specified, overrides the default timeout for this one<br/>            request. It may be a float (in seconds) or an instance of<br/>            :class:`urllib3.util.Timeout`.<br/>    <br/>        :param pool_timeout:<br/>            If set and the pool is set to block=True, then this method will<br/>            block for ``pool_timeout`` seconds and raise EmptyPoolError if no<br/>            connection is available within the time period.<br/>    <br/>        :param release_conn:<br/>            If False, then the urlopen call will not release the connection<br/>            back into the pool once a response is received (but will release if<br/>            you read the entire contents of the response such as when<br/>            `preload_content=True`). This is useful if you&#x27;re not preloading<br/>            the response&#x27;s content immediately. You will need to call<br/>            ``r.release_conn()`` on the response ``r`` to return the connection<br/>            back into the pool. If None, it takes the value of<br/>            ``response_kw.get(&#x27;preload_content&#x27;, True)``.<br/>    <br/>        :param chunked:<br/>            If True, urllib3 will send the body using chunked transfer<br/>            encoding. Otherwise, urllib3 will send the body using the standard<br/>            content-length form. Defaults to False.<br/>    <br/>        :param int body_pos:<br/>            Position to seek to in file-like body in the event of a retry or<br/>            redirect. Typically this won&#x27;t need to be set because urllib3 will<br/>            auto-populate the value when needed.<br/>    <br/>        :param \\**response_kw:<br/>            Additional parameters are passed to<br/>            :meth:`urllib3.response.HTTPResponse.from_httplib`<br/>        &quot;&quot;&quot;<br/>    <br/>        parsed_url = parse_url(url)<br/>        destination_scheme = parsed_url.scheme<br/>    <br/>        if headers is None:<br/>            headers = self.headers<br/>    <br/>        if not isinstance(retries, Retry):<br/>            retries = Retry.from_int(retries, redirect=redirect, default=self.retries)<br/>    <br/>        if release_conn is None:<br/>            release_conn = response_kw.get(&quot;preload_content&quot;, True)<br/>    <br/>        # Check host<br/>        if assert_same_host and not self.is_same_host(url):<br/>            raise HostChangedError(self, url, retries)<br/>    <br/>        # Ensure that the URL we&#x27;re connecting to is properly encoded<br/>        if url.startswith(&quot;/&quot;):<br/>            url = six.ensure_str(_encode_target(url))<br/>        else:<br/>            url = six.ensure_str(parsed_url.url)<br/>    <br/>        conn = None<br/>    <br/>        # Track whether `conn` needs to be released before<br/>        # returning/raising/recursing. Update this variable if necessary, and<br/>        # leave `release_conn` constant throughout the function. That way, if<br/>        # the function recurses, the original value of `release_conn` will be<br/>        # passed down into the recursive call, and its value will be respected.<br/>        #<br/>        # See issue #651 [1] for details.<br/>        #<br/>        # [1] &lt;https://github.com/urllib3/urllib3/issues/651&gt;<br/>        release_this_conn = release_conn<br/>    <br/>        http_tunnel_required = connection_requires_http_tunnel(<br/>            self.proxy, self.proxy_config, destination_scheme<br/>        )<br/>    <br/>        # Merge the proxy headers. Only done when not using HTTP CONNECT. We<br/>        # have to copy the headers dict so we can safely change it without those<br/>        # changes being reflected in anyone else&#x27;s copy.<br/>        if not http_tunnel_required:<br/>            headers = headers.copy()<br/>            headers.update(self.proxy_headers)<br/>    <br/>        # Must keep the exception bound to a separate variable or else Python 3<br/>        # complains about UnboundLocalError.<br/>        err = None<br/>    <br/>        # Keep track of whether we cleanly exited the except block. This<br/>        # ensures we do proper cleanup in finally.<br/>        clean_exit = False<br/>    <br/>        # Rewind body position, if needed. Record current position<br/>        # for future rewinds in the event of a redirect/retry.<br/>        body_pos = set_file_position(body, body_pos)<br/>    <br/>        try:<br/>            # Request a connection from the queue.<br/>            timeout_obj = self._get_timeout(timeout)<br/>            conn = self._get_conn(timeout=pool_timeout)<br/>    <br/>            conn.timeout = timeout_obj.connect_timeout<br/>    <br/>            is_new_proxy_conn = self.proxy is not None and not getattr(<br/>                conn, &quot;sock&quot;, None<br/>            )<br/>            if is_new_proxy_conn and http_tunnel_required:<br/>                self._prepare_proxy(conn)<br/>    <br/>            # Make the request on the httplib connection object.<br/>&gt;           httplib_response = self._make_request(<br/>                conn,<br/>                method,<br/>                url,<br/>                timeout=timeout_obj,<br/>                body=body,<br/>                headers=headers,<br/>                chunked=chunked,<br/>            )<br/><br/>D:\Python38\lib\site-packages\urllib3\connectionpool.py:699: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib3.connectionpool.HTTPConnectionPool object at 0x000001A21A480850&gt;<br/>conn = &lt;urllib3.connection.HTTPConnection object at 0x000001A21AF49790&gt;<br/>method = &#x27;POST&#x27;, url = &#x27;/sys/login&#x27;<br/>timeout = Timeout(connect=None, read=None, total=None), chunked = False<br/>httplib_request_kw = {&#x27;body&#x27;: &#x27;username=%E5%B0%8F%E7%9A%AE%E5%9C%A8%E6%AD%A4&amp;password=123&amp;role=member&#x27;, &#x27;headers&#x27;: {&#x27;User-Agent&#x27;: &#x27;python-r...cept&#x27;: &#x27;*/*&#x27;, &#x27;Connection&#x27;: &#x27;keep-alive&#x27;, &#x27;Content-Length&#x27;: &#x27;70&#x27;, &#x27;Content-Type&#x27;: &#x27;application/x-www-form-urlencoded&#x27;}}<br/>timeout_obj = Timeout(connect=None, read=None, total=None)<br/><br/>    def _make_request(<br/>        self, conn, method, url, timeout=_Default, chunked=False, **httplib_request_kw<br/>    ):<br/>        &quot;&quot;&quot;<br/>        Perform a request on a given urllib connection object taken from our<br/>        pool.<br/>    <br/>        :param conn:<br/>            a connection from one of our connection pools<br/>    <br/>        :param timeout:<br/>            Socket timeout in seconds for the request. This can be a<br/>            float or integer, which will set the same timeout value for<br/>            the socket connect and the socket read, or an instance of<br/>            :class:`urllib3.util.Timeout`, which gives you more fine-grained<br/>            control over your timeouts.<br/>        &quot;&quot;&quot;<br/>        self.num_requests += 1<br/>    <br/>        timeout_obj = self._get_timeout(timeout)<br/>        timeout_obj.start_connect()<br/>        conn.timeout = timeout_obj.connect_timeout<br/>    <br/>        # Trigger any extra validation we need to do.<br/>        try:<br/>            self._validate_conn(conn)<br/>        except (SocketTimeout, BaseSSLError) as e:<br/>            # Py2 raises this as a BaseSSLError, Py3 raises it as socket timeout.<br/>            self._raise_timeout(err=e, url=url, timeout_value=conn.timeout)<br/>            raise<br/>    <br/>        # conn.request() calls http.client.*.request, not the method in<br/>        # urllib3.request. It also calls makefile (recv) on the socket.<br/>        try:<br/>            if chunked:<br/>                conn.request_chunked(method, url, **httplib_request_kw)<br/>            else:<br/>&gt;               conn.request(method, url, **httplib_request_kw)<br/><br/>D:\Python38\lib\site-packages\urllib3\connectionpool.py:394: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib3.connection.HTTPConnection object at 0x000001A21AF49790&gt;<br/>method = &#x27;POST&#x27;, url = &#x27;/sys/login&#x27;<br/>body = &#x27;username=%E5%B0%8F%E7%9A%AE%E5%9C%A8%E6%AD%A4&amp;password=123&amp;role=member&#x27;<br/>headers = {&#x27;User-Agent&#x27;: &#x27;python-requests/2.25.1&#x27;, &#x27;Accept-Encoding&#x27;: &#x27;gzip, deflate&#x27;, &#x27;Accept&#x27;: &#x27;*/*&#x27;, &#x27;Connection&#x27;: &#x27;keep-alive&#x27;, &#x27;Content-Length&#x27;: &#x27;70&#x27;, &#x27;Content-Type&#x27;: &#x27;application/x-www-form-urlencoded&#x27;}<br/><br/>    def request(self, method, url, body=None, headers=None):<br/>        if headers is None:<br/>            headers = {}<br/>        else:<br/>            # Avoid modifying the headers passed into .request()<br/>            headers = headers.copy()<br/>        if &quot;user-agent&quot; not in (six.ensure_str(k.lower()) for k in headers):<br/>            headers[&quot;User-Agent&quot;] = _get_default_user_agent()<br/>&gt;       super(HTTPConnection, self).request(method, url, body=body, headers=headers)<br/><br/>D:\Python38\lib\site-packages\urllib3\connection.py:234: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib3.connection.HTTPConnection object at 0x000001A21AF49790&gt;<br/>method = &#x27;POST&#x27;, url = &#x27;/sys/login&#x27;<br/>body = &#x27;username=%E5%B0%8F%E7%9A%AE%E5%9C%A8%E6%AD%A4&amp;password=123&amp;role=member&#x27;<br/>headers = {&#x27;User-Agent&#x27;: &#x27;python-requests/2.25.1&#x27;, &#x27;Accept-Encoding&#x27;: &#x27;gzip, deflate&#x27;, &#x27;Accept&#x27;: &#x27;*/*&#x27;, &#x27;Connection&#x27;: &#x27;keep-alive&#x27;, &#x27;Content-Length&#x27;: &#x27;70&#x27;, &#x27;Content-Type&#x27;: &#x27;application/x-www-form-urlencoded&#x27;}<br/><br/>    def request(self, method, url, body=None, headers={}, *,<br/>                encode_chunked=False):<br/>        &quot;&quot;&quot;Send a complete request to the server.&quot;&quot;&quot;<br/>&gt;       self._send_request(method, url, body, headers, encode_chunked)<br/><br/>D:\Python38\lib\http\client.py:1255: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib3.connection.HTTPConnection object at 0x000001A21AF49790&gt;<br/>method = &#x27;POST&#x27;, url = &#x27;/sys/login&#x27;<br/>body = b&#x27;username=%E5%B0%8F%E7%9A%AE%E5%9C%A8%E6%AD%A4&amp;password=123&amp;role=member&#x27;<br/>headers = {&#x27;User-Agent&#x27;: &#x27;python-requests/2.25.1&#x27;, &#x27;Accept-Encoding&#x27;: &#x27;gzip, deflate&#x27;, &#x27;Accept&#x27;: &#x27;*/*&#x27;, &#x27;Connection&#x27;: &#x27;keep-alive&#x27;, &#x27;Content-Length&#x27;: &#x27;70&#x27;, &#x27;Content-Type&#x27;: &#x27;application/x-www-form-urlencoded&#x27;}<br/>encode_chunked = False<br/><br/>    def _send_request(self, method, url, body, headers, encode_chunked):<br/>        # Honor explicitly requested Host: and Accept-Encoding: headers.<br/>        header_names = frozenset(k.lower() for k in headers)<br/>        skips = {}<br/>        if &#x27;host&#x27; in header_names:<br/>            skips[&#x27;skip_host&#x27;] = 1<br/>        if &#x27;accept-encoding&#x27; in header_names:<br/>            skips[&#x27;skip_accept_encoding&#x27;] = 1<br/>    <br/>        self.putrequest(method, url, **skips)<br/>    <br/>        # chunked encoding will happen if HTTP/1.1 is used and either<br/>        # the caller passes encode_chunked=True or the following<br/>        # conditions hold:<br/>        # 1. content-length has not been explicitly set<br/>        # 2. the body is a file or iterable, but not a str or bytes-like<br/>        # 3. Transfer-Encoding has NOT been explicitly set by the caller<br/>    <br/>        if &#x27;content-length&#x27; not in header_names:<br/>            # only chunk body if not explicitly set for backwards<br/>            # compatibility, assuming the client code is already handling the<br/>            # chunking<br/>            if &#x27;transfer-encoding&#x27; not in header_names:<br/>                # if content-length cannot be automatically determined, fall<br/>                # back to chunked encoding<br/>                encode_chunked = False<br/>                content_length = self._get_content_length(body, method)<br/>                if content_length is None:<br/>                    if body is not None:<br/>                        if self.debuglevel &gt; 0:<br/>                            print(&#x27;Unable to determine size of %r&#x27; % body)<br/>                        encode_chunked = True<br/>                        self.putheader(&#x27;Transfer-Encoding&#x27;, &#x27;chunked&#x27;)<br/>                else:<br/>                    self.putheader(&#x27;Content-Length&#x27;, str(content_length))<br/>        else:<br/>            encode_chunked = False<br/>    <br/>        for hdr, value in headers.items():<br/>            self.putheader(hdr, value)<br/>        if isinstance(body, str):<br/>            # RFC 2616 Section 3.7.1 says that text default has a<br/>            # default charset of iso-8859-1.<br/>            body = _encode(body, &#x27;body&#x27;)<br/>&gt;       self.endheaders(body, encode_chunked=encode_chunked)<br/><br/>D:\Python38\lib\http\client.py:1301: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib3.connection.HTTPConnection object at 0x000001A21AF49790&gt;<br/>message_body = b&#x27;username=%E5%B0%8F%E7%9A%AE%E5%9C%A8%E6%AD%A4&amp;password=123&amp;role=member&#x27;<br/><br/>    def endheaders(self, message_body=None, *, encode_chunked=False):<br/>        &quot;&quot;&quot;Indicate that the last header line has been sent to the server.<br/>    <br/>        This method sends the request to the server.  The optional message_body<br/>        argument can be used to pass a message body associated with the<br/>        request.<br/>        &quot;&quot;&quot;<br/>        if self.__state == _CS_REQ_STARTED:<br/>            self.__state = _CS_REQ_SENT<br/>        else:<br/>            raise CannotSendHeader()<br/>&gt;       self._send_output(message_body, encode_chunked=encode_chunked)<br/><br/>D:\Python38\lib\http\client.py:1250: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib3.connection.HTTPConnection object at 0x000001A21AF49790&gt;<br/>message_body = b&#x27;username=%E5%B0%8F%E7%9A%AE%E5%9C%A8%E6%AD%A4&amp;password=123&amp;role=member&#x27;<br/>encode_chunked = False<br/><br/>    def _send_output(self, message_body=None, encode_chunked=False):<br/>        &quot;&quot;&quot;Send the currently buffered request and clear the buffer.<br/>    <br/>        Appends an extra \\r\\n to the buffer.<br/>        A message_body may be specified, to be appended to the request.<br/>        &quot;&quot;&quot;<br/>        self._buffer.extend((b&quot;&quot;, b&quot;&quot;))<br/>        msg = b&quot;\r\n&quot;.join(self._buffer)<br/>        del self._buffer[:]<br/>&gt;       self.send(msg)<br/><br/>D:\Python38\lib\http\client.py:1010: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib3.connection.HTTPConnection object at 0x000001A21AF49790&gt;<br/>data = b&#x27;POST /sys/login HTTP/1.1\r\nHost: localhost:9000\r\nUser-Agent: python-requests/2.25.1\r\nAccept-Encoding: gzip, def...Accept: */*\r\nConnection: keep-alive\r\nContent-Length: 70\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\n&#x27;<br/><br/>    def send(self, data):<br/>        &quot;&quot;&quot;Send `data&#x27; to the server.<br/>        ``data`` can be a string object, a bytes object, an array object, a<br/>        file-like object that supports a .read() method, or an iterable object.<br/>        &quot;&quot;&quot;<br/>    <br/>        if self.sock is None:<br/>            if self.auto_open:<br/>&gt;               self.connect()<br/><br/>D:\Python38\lib\http\client.py:950: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib3.connection.HTTPConnection object at 0x000001A21AF49790&gt;<br/><br/>    def connect(self):<br/>&gt;       conn = self._new_conn()<br/><br/>D:\Python38\lib\site-packages\urllib3\connection.py:200: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib3.connection.HTTPConnection object at 0x000001A21AF49790&gt;<br/><br/>    def _new_conn(self):<br/>        &quot;&quot;&quot;Establish a socket connection and set nodelay settings on it.<br/>    <br/>        :return: New socket connection.<br/>        &quot;&quot;&quot;<br/>        extra_kw = {}<br/>        if self.source_address:<br/>            extra_kw[&quot;source_address&quot;] = self.source_address<br/>    <br/>        if self.socket_options:<br/>            extra_kw[&quot;socket_options&quot;] = self.socket_options<br/>    <br/>        try:<br/>            conn = connection.create_connection(<br/>                (self._dns_host, self.port), self.timeout, **extra_kw<br/>            )<br/>    <br/>        except SocketTimeout:<br/>            raise ConnectTimeoutError(<br/>                self,<br/>                &quot;Connection to %s timed out. (connect timeout=%s)&quot;<br/>                % (self.host, self.timeout),<br/>            )<br/>    <br/>        except SocketError as e:<br/>&gt;           raise NewConnectionError(<br/>                self, &quot;Failed to establish a new connection: %s&quot; % e<br/>            )<br/><span class="error">E           urllib3.exceptions.NewConnectionError: &lt;urllib3.connection.HTTPConnection object at 0x000001A21AF49790&gt;: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝，无法连接。</span><br/><br/>D:\Python38\lib\site-packages\urllib3\connection.py:181: NewConnectionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;requests.adapters.HTTPAdapter object at 0x000001A21AF49160&gt;<br/>request = &lt;PreparedRequest [POST]&gt;, stream = False<br/>timeout = Timeout(connect=None, read=None, total=None), verify = True<br/>cert = None, proxies = OrderedDict()<br/><br/>    def send(self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None):<br/>        &quot;&quot;&quot;Sends PreparedRequest object. Returns Response object.<br/>    <br/>        :param request: The :class:`PreparedRequest &lt;PreparedRequest&gt;` being sent.<br/>        :param stream: (optional) Whether to stream the request content.<br/>        :param timeout: (optional) How long to wait for the server to send<br/>            data before giving up, as a float, or a :ref:`(connect timeout,<br/>            read timeout) &lt;timeouts&gt;` tuple.<br/>        :type timeout: float or tuple or urllib3 Timeout object<br/>        :param verify: (optional) Either a boolean, in which case it controls whether<br/>            we verify the server&#x27;s TLS certificate, or a string, in which case it<br/>            must be a path to a CA bundle to use<br/>        :param cert: (optional) Any user-provided SSL certificate to be trusted.<br/>        :param proxies: (optional) The proxies dictionary to apply to the request.<br/>        :rtype: requests.Response<br/>        &quot;&quot;&quot;<br/>    <br/>        try:<br/>            conn = self.get_connection(request.url, proxies)<br/>        except LocationValueError as e:<br/>            raise InvalidURL(e, request=request)<br/>    <br/>        self.cert_verify(conn, request.url, verify, cert)<br/>        url = self.request_url(request, proxies)<br/>        self.add_headers(request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies)<br/>    <br/>        chunked = not (request.body is None or &#x27;Content-Length&#x27; in request.headers)<br/>    <br/>        if isinstance(timeout, tuple):<br/>            try:<br/>                connect, read = timeout<br/>                timeout = TimeoutSauce(connect=connect, read=read)<br/>            except ValueError as e:<br/>                # this may raise a string formatting error.<br/>                err = (&quot;Invalid timeout {}. Pass a (connect, read) &quot;<br/>                       &quot;timeout tuple, or a single float to set &quot;<br/>                       &quot;both timeouts to the same value&quot;.format(timeout))<br/>                raise ValueError(err)<br/>        elif isinstance(timeout, TimeoutSauce):<br/>            pass<br/>        else:<br/>            timeout = TimeoutSauce(connect=timeout, read=timeout)<br/>    <br/>        try:<br/>            if not chunked:<br/>&gt;               resp = conn.urlopen(<br/>                    method=request.method,<br/>                    url=url,<br/>                    body=request.body,<br/>                    headers=request.headers,<br/>                    redirect=False,<br/>                    assert_same_host=False,<br/>                    preload_content=False,<br/>                    decode_content=False,<br/>                    retries=self.max_retries,<br/>                    timeout=timeout<br/>                )<br/><br/>D:\Python38\lib\site-packages\requests\adapters.py:439: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib3.connectionpool.HTTPConnectionPool object at 0x000001A21A480850&gt;<br/>method = &#x27;POST&#x27;, url = &#x27;/sys/login&#x27;<br/>body = &#x27;username=%E5%B0%8F%E7%9A%AE%E5%9C%A8%E6%AD%A4&amp;password=123&amp;role=member&#x27;<br/>headers = {&#x27;User-Agent&#x27;: &#x27;python-requests/2.25.1&#x27;, &#x27;Accept-Encoding&#x27;: &#x27;gzip, deflate&#x27;, &#x27;Accept&#x27;: &#x27;*/*&#x27;, &#x27;Connection&#x27;: &#x27;keep-alive&#x27;, &#x27;Content-Length&#x27;: &#x27;70&#x27;, &#x27;Content-Type&#x27;: &#x27;application/x-www-form-urlencoded&#x27;}<br/>retries = Retry(total=0, connect=None, read=False, redirect=None, status=None)<br/>redirect = False, assert_same_host = False<br/>timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None<br/>release_conn = False, chunked = False, body_pos = None<br/>response_kw = {&#x27;decode_content&#x27;: False, &#x27;preload_content&#x27;: False}<br/>parsed_url = Url(scheme=None, auth=None, host=None, port=None, path=&#x27;/sys/login&#x27;, query=None, fragment=None)<br/>destination_scheme = None, conn = None, release_this_conn = True<br/>http_tunnel_required = False, err = None, clean_exit = False<br/><br/>    def urlopen(<br/>        self,<br/>        method,<br/>        url,<br/>        body=None,<br/>        headers=None,<br/>        retries=None,<br/>        redirect=True,<br/>        assert_same_host=True,<br/>        timeout=_Default,<br/>        pool_timeout=None,<br/>        release_conn=None,<br/>        chunked=False,<br/>        body_pos=None,<br/>        **response_kw<br/>    ):<br/>        &quot;&quot;&quot;<br/>        Get a connection from the pool and perform an HTTP request. This is the<br/>        lowest level call for making a request, so you&#x27;ll need to specify all<br/>        the raw details.<br/>    <br/>        .. note::<br/>    <br/>           More commonly, it&#x27;s appropriate to use a convenience method provided<br/>           by :class:`.RequestMethods`, such as :meth:`request`.<br/>    <br/>        .. note::<br/>    <br/>           `release_conn` will only behave as expected if<br/>           `preload_content=False` because we want to make<br/>           `preload_content=False` the default behaviour someday soon without<br/>           breaking backwards compatibility.<br/>    <br/>        :param method:<br/>            HTTP request method (such as GET, POST, PUT, etc.)<br/>    <br/>        :param url:<br/>            The URL to perform the request on.<br/>    <br/>        :param body:<br/>            Data to send in the request body, either :class:`str`, :class:`bytes`,<br/>            an iterable of :class:`str`/:class:`bytes`, or a file-like object.<br/>    <br/>        :param headers:<br/>            Dictionary of custom headers to send, such as User-Agent,<br/>            If-None-Match, etc. If None, pool headers are used. If provided,<br/>            these headers completely replace any pool-specific headers.<br/>    <br/>        :param retries:<br/>            Configure the number of retries to allow before raising a<br/>            :class:`~urllib3.exceptions.MaxRetryError` exception.<br/>    <br/>            Pass ``None`` to retry until you receive a response. Pass a<br/>            :class:`~urllib3.util.retry.Retry` object for fine-grained control<br/>            over different types of retries.<br/>            Pass an integer number to retry connection errors that many times,<br/>            but no other types of errors. Pass zero to never retry.<br/>    <br/>            If ``False``, then retries are disabled and any exception is raised<br/>            immediately. Also, instead of raising a MaxRetryError on redirects,<br/>            the redirect response will be returned.<br/>    <br/>        :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int.<br/>    <br/>        :param redirect:<br/>            If True, automatically handle redirects (status codes 301, 302,<br/>            303, 307, 308). Each redirect counts as a retry. Disabling retries<br/>            will disable redirect, too.<br/>    <br/>        :param assert_same_host:<br/>            If ``True``, will make sure that the host of the pool requests is<br/>            consistent else will raise HostChangedError. When ``False``, you can<br/>            use the pool on an HTTP proxy and request foreign hosts.<br/>    <br/>        :param timeout:<br/>            If specified, overrides the default timeout for this one<br/>            request. It may be a float (in seconds) or an instance of<br/>            :class:`urllib3.util.Timeout`.<br/>    <br/>        :param pool_timeout:<br/>            If set and the pool is set to block=True, then this method will<br/>            block for ``pool_timeout`` seconds and raise EmptyPoolError if no<br/>            connection is available within the time period.<br/>    <br/>        :param release_conn:<br/>            If False, then the urlopen call will not release the connection<br/>            back into the pool once a response is received (but will release if<br/>            you read the entire contents of the response such as when<br/>            `preload_content=True`). This is useful if you&#x27;re not preloading<br/>            the response&#x27;s content immediately. You will need to call<br/>            ``r.release_conn()`` on the response ``r`` to return the connection<br/>            back into the pool. If None, it takes the value of<br/>            ``response_kw.get(&#x27;preload_content&#x27;, True)``.<br/>    <br/>        :param chunked:<br/>            If True, urllib3 will send the body using chunked transfer<br/>            encoding. Otherwise, urllib3 will send the body using the standard<br/>            content-length form. Defaults to False.<br/>    <br/>        :param int body_pos:<br/>            Position to seek to in file-like body in the event of a retry or<br/>            redirect. Typically this won&#x27;t need to be set because urllib3 will<br/>            auto-populate the value when needed.<br/>    <br/>        :param \\**response_kw:<br/>            Additional parameters are passed to<br/>            :meth:`urllib3.response.HTTPResponse.from_httplib`<br/>        &quot;&quot;&quot;<br/>    <br/>        parsed_url = parse_url(url)<br/>        destination_scheme = parsed_url.scheme<br/>    <br/>        if headers is None:<br/>            headers = self.headers<br/>    <br/>        if not isinstance(retries, Retry):<br/>            retries = Retry.from_int(retries, redirect=redirect, default=self.retries)<br/>    <br/>        if release_conn is None:<br/>            release_conn = response_kw.get(&quot;preload_content&quot;, True)<br/>    <br/>        # Check host<br/>        if assert_same_host and not self.is_same_host(url):<br/>            raise HostChangedError(self, url, retries)<br/>    <br/>        # Ensure that the URL we&#x27;re connecting to is properly encoded<br/>        if url.startswith(&quot;/&quot;):<br/>            url = six.ensure_str(_encode_target(url))<br/>        else:<br/>            url = six.ensure_str(parsed_url.url)<br/>    <br/>        conn = None<br/>    <br/>        # Track whether `conn` needs to be released before<br/>        # returning/raising/recursing. Update this variable if necessary, and<br/>        # leave `release_conn` constant throughout the function. That way, if<br/>        # the function recurses, the original value of `release_conn` will be<br/>        # passed down into the recursive call, and its value will be respected.<br/>        #<br/>        # See issue #651 [1] for details.<br/>        #<br/>        # [1] &lt;https://github.com/urllib3/urllib3/issues/651&gt;<br/>        release_this_conn = release_conn<br/>    <br/>        http_tunnel_required = connection_requires_http_tunnel(<br/>            self.proxy, self.proxy_config, destination_scheme<br/>        )<br/>    <br/>        # Merge the proxy headers. Only done when not using HTTP CONNECT. We<br/>        # have to copy the headers dict so we can safely change it without those<br/>        # changes being reflected in anyone else&#x27;s copy.<br/>        if not http_tunnel_required:<br/>            headers = headers.copy()<br/>            headers.update(self.proxy_headers)<br/>    <br/>        # Must keep the exception bound to a separate variable or else Python 3<br/>        # complains about UnboundLocalError.<br/>        err = None<br/>    <br/>        # Keep track of whether we cleanly exited the except block. This<br/>        # ensures we do proper cleanup in finally.<br/>        clean_exit = False<br/>    <br/>        # Rewind body position, if needed. Record current position<br/>        # for future rewinds in the event of a redirect/retry.<br/>        body_pos = set_file_position(body, body_pos)<br/>    <br/>        try:<br/>            # Request a connection from the queue.<br/>            timeout_obj = self._get_timeout(timeout)<br/>            conn = self._get_conn(timeout=pool_timeout)<br/>    <br/>            conn.timeout = timeout_obj.connect_timeout<br/>    <br/>            is_new_proxy_conn = self.proxy is not None and not getattr(<br/>                conn, &quot;sock&quot;, None<br/>            )<br/>            if is_new_proxy_conn and http_tunnel_required:<br/>                self._prepare_proxy(conn)<br/>    <br/>            # Make the request on the httplib connection object.<br/>            httplib_response = self._make_request(<br/>                conn,<br/>                method,<br/>                url,<br/>                timeout=timeout_obj,<br/>                body=body,<br/>                headers=headers,<br/>                chunked=chunked,<br/>            )<br/>    <br/>            # If we&#x27;re going to release the connection in ``finally:``, then<br/>            # the response doesn&#x27;t need to know about the connection. Otherwise<br/>            # it will also try to release it and we&#x27;ll have a double-release<br/>            # mess.<br/>            response_conn = conn if not release_conn else None<br/>    <br/>            # Pass method to Response for length checking<br/>            response_kw[&quot;request_method&quot;] = method<br/>    <br/>            # Import httplib&#x27;s response into our own wrapper object<br/>            response = self.ResponseCls.from_httplib(<br/>                httplib_response,<br/>                pool=self,<br/>                connection=response_conn,<br/>                retries=retries,<br/>                **response_kw<br/>            )<br/>    <br/>            # Everything went great!<br/>            clean_exit = True<br/>    <br/>        except EmptyPoolError:<br/>            # Didn&#x27;t get a connection from the pool, no need to clean up<br/>            clean_exit = True<br/>            release_this_conn = False<br/>            raise<br/>    <br/>        except (<br/>            TimeoutError,<br/>            HTTPException,<br/>            SocketError,<br/>            ProtocolError,<br/>            BaseSSLError,<br/>            SSLError,<br/>            CertificateError,<br/>        ) as e:<br/>            # Discard the connection for these exceptions. It will be<br/>            # replaced during the next _get_conn() call.<br/>            clean_exit = False<br/>            if isinstance(e, (BaseSSLError, CertificateError)):<br/>                e = SSLError(e)<br/>            elif isinstance(e, (SocketError, NewConnectionError)) and self.proxy:<br/>                e = ProxyError(&quot;Cannot connect to proxy.&quot;, e)<br/>            elif isinstance(e, (SocketError, HTTPException)):<br/>                e = ProtocolError(&quot;Connection aborted.&quot;, e)<br/>    <br/>&gt;           retries = retries.increment(<br/>                method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]<br/>            )<br/><br/>D:\Python38\lib\site-packages\urllib3\connectionpool.py:755: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = Retry(total=0, connect=None, read=False, redirect=None, status=None)<br/>method = &#x27;POST&#x27;, url = &#x27;/sys/login&#x27;, response = None<br/>error = NewConnectionError(&#x27;&lt;urllib3.connection.HTTPConnection object at 0x000001A21AF49790&gt;: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝，无法连接。&#x27;)<br/>_pool = &lt;urllib3.connectionpool.HTTPConnectionPool object at 0x000001A21A480850&gt;<br/>_stacktrace = &lt;traceback object at 0x000001A21AF84E80&gt;<br/><br/>    def increment(<br/>        self,<br/>        method=None,<br/>        url=None,<br/>        response=None,<br/>        error=None,<br/>        _pool=None,<br/>        _stacktrace=None,<br/>    ):<br/>        &quot;&quot;&quot;Return a new Retry object with incremented retry counters.<br/>    <br/>        :param response: A response object, or None, if the server did not<br/>            return a response.<br/>        :type response: :class:`~urllib3.response.HTTPResponse`<br/>        :param Exception error: An error encountered during the request, or<br/>            None if the response was received successfully.<br/>    <br/>        :return: A new ``Retry`` object.<br/>        &quot;&quot;&quot;<br/>        if self.total is False and error:<br/>            # Disabled, indicate to re-raise the error.<br/>            raise six.reraise(type(error), error, _stacktrace)<br/>    <br/>        total = self.total<br/>        if total is not None:<br/>            total -= 1<br/>    <br/>        connect = self.connect<br/>        read = self.read<br/>        redirect = self.redirect<br/>        status_count = self.status<br/>        other = self.other<br/>        cause = &quot;unknown&quot;<br/>        status = None<br/>        redirect_location = None<br/>    <br/>        if error and self._is_connection_error(error):<br/>            # Connect retry?<br/>            if connect is False:<br/>                raise six.reraise(type(error), error, _stacktrace)<br/>            elif connect is not None:<br/>                connect -= 1<br/>    <br/>        elif error and self._is_read_error(error):<br/>            # Read retry?<br/>            if read is False or not self._is_method_retryable(method):<br/>                raise six.reraise(type(error), error, _stacktrace)<br/>            elif read is not None:<br/>                read -= 1<br/>    <br/>        elif error:<br/>            # Other retry?<br/>            if other is not None:<br/>                other -= 1<br/>    <br/>        elif response and response.get_redirect_location():<br/>            # Redirect retry?<br/>            if redirect is not None:<br/>                redirect -= 1<br/>            cause = &quot;too many redirects&quot;<br/>            redirect_location = response.get_redirect_location()<br/>            status = response.status<br/>    <br/>        else:<br/>            # Incrementing because of a server error like a 500 in<br/>            # status_forcelist and the given method is in the allowed_methods<br/>            cause = ResponseError.GENERIC_ERROR<br/>            if response and response.status:<br/>                if status_count is not None:<br/>                    status_count -= 1<br/>                cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status)<br/>                status = response.status<br/>    <br/>        history = self.history + (<br/>            RequestHistory(method, url, error, status, redirect_location),<br/>        )<br/>    <br/>        new_retry = self.new(<br/>            total=total,<br/>            connect=connect,<br/>            read=read,<br/>            redirect=redirect,<br/>            status=status_count,<br/>            other=other,<br/>            history=history,<br/>        )<br/>    <br/>        if new_retry.is_exhausted():<br/>&gt;           raise MaxRetryError(_pool, url, error or ResponseError(cause))<br/><span class="error">E           urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host=&#x27;localhost&#x27;, port=9000): Max retries exceeded with url: /sys/login (Caused by NewConnectionError(&#x27;&lt;urllib3.connection.HTTPConnection object at 0x000001A21AF49790&gt;: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝，无法连接。&#x27;))</span><br/><br/>D:\Python38\lib\site-packages\urllib3\util\retry.py:574: MaxRetryError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>init = &lt;api.request.Reque object at 0x000001A21AF36BE0&gt;<br/><br/>    def test_002(init):<br/>        # 从yam文件中获取指定接口的数据<br/>        data = loadData.getApiInfo(&#x27;login&#x27;)<br/>        # 获取接口数据中断言<br/>        asst = data.get(&#x27;asst&#x27;)<br/>        # 将接口参数给Reque，然后由send_request发送请求<br/>&gt;       res = init.send_request(data)<br/><br/>test_shou_user.py:24: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/>..\api\request.py:80: in send_request<br/>    self.response = self.session.request(method=method,url=url,data=data,headers=headers)<br/>D:\Python38\lib\site-packages\requests\sessions.py:542: in request<br/>    resp = self.send(prep, **send_kwargs)<br/>D:\Python38\lib\site-packages\requests\sessions.py:655: in send<br/>    r = adapter.send(request, **kwargs)<br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;requests.adapters.HTTPAdapter object at 0x000001A21AF49160&gt;<br/>request = &lt;PreparedRequest [POST]&gt;, stream = False<br/>timeout = Timeout(connect=None, read=None, total=None), verify = True<br/>cert = None, proxies = OrderedDict()<br/><br/>    def send(self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None):<br/>        &quot;&quot;&quot;Sends PreparedRequest object. Returns Response object.<br/>    <br/>        :param request: The :class:`PreparedRequest &lt;PreparedRequest&gt;` being sent.<br/>        :param stream: (optional) Whether to stream the request content.<br/>        :param timeout: (optional) How long to wait for the server to send<br/>            data before giving up, as a float, or a :ref:`(connect timeout,<br/>            read timeout) &lt;timeouts&gt;` tuple.<br/>        :type timeout: float or tuple or urllib3 Timeout object<br/>        :param verify: (optional) Either a boolean, in which case it controls whether<br/>            we verify the server&#x27;s TLS certificate, or a string, in which case it<br/>            must be a path to a CA bundle to use<br/>        :param cert: (optional) Any user-provided SSL certificate to be trusted.<br/>        :param proxies: (optional) The proxies dictionary to apply to the request.<br/>        :rtype: requests.Response<br/>        &quot;&quot;&quot;<br/>    <br/>        try:<br/>            conn = self.get_connection(request.url, proxies)<br/>        except LocationValueError as e:<br/>            raise InvalidURL(e, request=request)<br/>    <br/>        self.cert_verify(conn, request.url, verify, cert)<br/>        url = self.request_url(request, proxies)<br/>        self.add_headers(request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies)<br/>    <br/>        chunked = not (request.body is None or &#x27;Content-Length&#x27; in request.headers)<br/>    <br/>        if isinstance(timeout, tuple):<br/>            try:<br/>                connect, read = timeout<br/>                timeout = TimeoutSauce(connect=connect, read=read)<br/>            except ValueError as e:<br/>                # this may raise a string formatting error.<br/>                err = (&quot;Invalid timeout {}. Pass a (connect, read) &quot;<br/>                       &quot;timeout tuple, or a single float to set &quot;<br/>                       &quot;both timeouts to the same value&quot;.format(timeout))<br/>                raise ValueError(err)<br/>        elif isinstance(timeout, TimeoutSauce):<br/>            pass<br/>        else:<br/>            timeout = TimeoutSauce(connect=timeout, read=timeout)<br/>    <br/>        try:<br/>            if not chunked:<br/>                resp = conn.urlopen(<br/>                    method=request.method,<br/>                    url=url,<br/>                    body=request.body,<br/>                    headers=request.headers,<br/>                    redirect=False,<br/>                    assert_same_host=False,<br/>                    preload_content=False,<br/>                    decode_content=False,<br/>                    retries=self.max_retries,<br/>                    timeout=timeout<br/>                )<br/>    <br/>            # Send the request.<br/>            else:<br/>                if hasattr(conn, &#x27;proxy_pool&#x27;):<br/>                    conn = conn.proxy_pool<br/>    <br/>                low_conn = conn._get_conn(timeout=DEFAULT_POOL_TIMEOUT)<br/>    <br/>                try:<br/>                    low_conn.putrequest(request.method,<br/>                                        url,<br/>                                        skip_accept_encoding=True)<br/>    <br/>                    for header, value in request.headers.items():<br/>                        low_conn.putheader(header, value)<br/>    <br/>                    low_conn.endheaders()<br/>    <br/>                    for i in request.body:<br/>                        low_conn.send(hex(len(i))[2:].encode(&#x27;utf-8&#x27;))<br/>                        low_conn.send(b&#x27;\r\n&#x27;)<br/>                        low_conn.send(i)<br/>                        low_conn.send(b&#x27;\r\n&#x27;)<br/>                    low_conn.send(b&#x27;0\r\n\r\n&#x27;)<br/>    <br/>                    # Receive the response from the server<br/>                    try:<br/>                        # For Python 2.7, use buffering of HTTP responses<br/>                        r = low_conn.getresponse(buffering=True)<br/>                    except TypeError:<br/>                        # For compatibility with Python 3.3+<br/>                        r = low_conn.getresponse()<br/>    <br/>                    resp = HTTPResponse.from_httplib(<br/>                        r,<br/>                        pool=conn,<br/>                        connection=low_conn,<br/>                        preload_content=False,<br/>                        decode_content=False<br/>                    )<br/>                except:<br/>                    # If we hit any problems here, clean up the connection.<br/>                    # Then, reraise so that we can handle the actual exception.<br/>                    low_conn.close()<br/>                    raise<br/>    <br/>        except (ProtocolError, socket.error) as err:<br/>            raise ConnectionError(err, request=request)<br/>    <br/>        except MaxRetryError as e:<br/>            if isinstance(e.reason, ConnectTimeoutError):<br/>                # TODO: Remove this in 3.0.0: see #2811<br/>                if not isinstance(e.reason, NewConnectionError):<br/>                    raise ConnectTimeout(e, request=request)<br/>    <br/>            if isinstance(e.reason, ResponseError):<br/>                raise RetryError(e, request=request)<br/>    <br/>            if isinstance(e.reason, _ProxyError):<br/>                raise ProxyError(e, request=request)<br/>    <br/>            if isinstance(e.reason, _SSLError):<br/>                # This branch is for urllib3 v1.22 and later.<br/>                raise SSLError(e, request=request)<br/>    <br/>&gt;           raise ConnectionError(e, request=request)<br/><span class="error">E           requests.exceptions.ConnectionError: HTTPConnectionPool(host=&#x27;localhost&#x27;, port=9000): Max retries exceeded with url: /sys/login (Caused by NewConnectionError(&#x27;&lt;urllib3.connection.HTTPConnection object at 0x000001A21AF49790&gt;: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝，无法连接。&#x27;))</span><br/><br/>D:\Python38\lib\site-packages\requests\adapters.py:516: ConnectionError<br/> ------------------------------Captured stderr call------------------------------ <br/>2021-09-10 15:29:21,002  request send_request[44]  INFO ：get url http://localhost:9000/sys/login
2021-09-10 15:29:21,003  request send_request[62]  INFO ：get data {&#x27;username&#x27;: &#x27;小皮在此&#x27;, &#x27;password&#x27;: 123, &#x27;role&#x27;: &#x27;member&#x27;}
2021-09-10 15:29:21,003  request send_request[73]  INFO ：get method POST
<br/> -------------------------------Captured log call-------------------------------- <br/>INFO     tools.loggingModule:request.py:44 get url http://localhost:9000/sys/login
INFO     tools.loggingModule:request.py:62 get data {&#x27;username&#x27;: &#x27;小皮在此&#x27;, &#x27;password&#x27;: 123, &#x27;role&#x27;: &#x27;member&#x27;}
INFO     tools.loggingModule:request.py:73 get method POST<br/></div></td></tr></tbody>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">test_shou_user.py::test_004</td>
          <td class="col-duration">0.00</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">init = &lt;api.request.Reque object at 0x000001A21AF36BE0&gt;<br/><br/>    def test_004(init):<br/>        data = loadData.getApiInfo(&#x27;category&#x27;)<br/>        # 获取接口数据中断言<br/>        asst = data.get(&#x27;asst&#x27;)<br/>        # 将接口参数给Reque，然后由send_request发送请求<br/>&gt;       res = init.send_request(data)<br/><br/>test_shou_user.py:36: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/>..\api\request.py:51: in send_request<br/>    headers[k] = os.environ[(v.lstrip(&#x27;$&#x27;))]<br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = environ({&#x27;ALLUSERSPROFILE&#x27;: &#x27;C:\\ProgramData&#x27;, &#x27;ANALYSIS_PATH&#x27;: &#x27;C:\\Program Files (x86)\\HP\\LoadRunner\\&#x27;, &#x27;ANDROID_...re-rasterizer --enable-features=NetworkServiceInProcess&#x27;, &#x27;PYTEST_CURRENT_TEST&#x27;: &#x27;test_shou_user.py::test_004 (call)&#x27;})<br/>key = &#x27;token&#x27;<br/><br/>    def __getitem__(self, key):<br/>        try:<br/>            value = self._data[self.encodekey(key)]<br/>        except KeyError:<br/>            # raise KeyError with the original key value<br/>&gt;           raise KeyError(key) from None<br/><span class="error">E           KeyError: &#x27;token&#x27;</span><br/><br/>D:\Python38\lib\os.py:675: KeyError<br/> ------------------------------Captured stderr call------------------------------ <br/>2021-09-10 15:29:25,847  request send_request[44]  INFO ：get url http://localhost:9000/main/sell/category/show
<br/> -------------------------------Captured log call-------------------------------- <br/>INFO     tools.loggingModule:request.py:44 get url http://localhost:9000/main/sell/category/show<br/></div></td></tr></tbody>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">test_shou_user.py::test_003</td>
          <td class="col-duration">4.01</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;urllib3.connection.HTTPConnection object at 0x000001A21B1902E0&gt;<br/><br/>    def _new_conn(self):<br/>        &quot;&quot;&quot;Establish a socket connection and set nodelay settings on it.<br/>    <br/>        :return: New socket connection.<br/>        &quot;&quot;&quot;<br/>        extra_kw = {}<br/>        if self.source_address:<br/>            extra_kw[&quot;source_address&quot;] = self.source_address<br/>    <br/>        if self.socket_options:<br/>            extra_kw[&quot;socket_options&quot;] = self.socket_options<br/>    <br/>        try:<br/>&gt;           conn = connection.create_connection(<br/>                (self._dns_host, self.port), self.timeout, **extra_kw<br/>            )<br/><br/>D:\Python38\lib\site-packages\urllib3\connection.py:169: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>address = (&#x27;localhost&#x27;, 9000), timeout = None, source_address = None<br/>socket_options = [(6, 1, 1)]<br/><br/>    def create_connection(<br/>        address,<br/>        timeout=socket._GLOBAL_DEFAULT_TIMEOUT,<br/>        source_address=None,<br/>        socket_options=None,<br/>    ):<br/>        &quot;&quot;&quot;Connect to *address* and return the socket object.<br/>    <br/>        Convenience function.  Connect to *address* (a 2-tuple ``(host,<br/>        port)``) and return the socket object.  Passing the optional<br/>        *timeout* parameter will set the timeout on the socket instance<br/>        before attempting to connect.  If no *timeout* is supplied, the<br/>        global default timeout setting returned by :func:`socket.getdefaulttimeout`<br/>        is used.  If *source_address* is set it must be a tuple of (host, port)<br/>        for the socket to bind as a source address before making the connection.<br/>        An host of &#x27;&#x27; or port 0 tells the OS to use the default.<br/>        &quot;&quot;&quot;<br/>    <br/>        host, port = address<br/>        if host.startswith(&quot;[&quot;):<br/>            host = host.strip(&quot;[]&quot;)<br/>        err = None<br/>    <br/>        # Using the value from allowed_gai_family() in the context of getaddrinfo lets<br/>        # us select whether to work with IPv4 DNS records, IPv6 records, or both.<br/>        # The original create_connection function always returns all records.<br/>        family = allowed_gai_family()<br/>    <br/>        try:<br/>            host.encode(&quot;idna&quot;)<br/>        except UnicodeError:<br/>            return six.raise_from(<br/>                LocationParseError(u&quot;&#x27;%s&#x27;, label empty or too long&quot; % host), None<br/>            )<br/>    <br/>        for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):<br/>            af, socktype, proto, canonname, sa = res<br/>            sock = None<br/>            try:<br/>                sock = socket.socket(af, socktype, proto)<br/>    <br/>                # If provided, set socket level options before connecting.<br/>                _set_socket_options(sock, socket_options)<br/>    <br/>                if timeout is not socket._GLOBAL_DEFAULT_TIMEOUT:<br/>                    sock.settimeout(timeout)<br/>                if source_address:<br/>                    sock.bind(source_address)<br/>                sock.connect(sa)<br/>                return sock<br/>    <br/>            except socket.error as e:<br/>                err = e<br/>                if sock is not None:<br/>                    sock.close()<br/>                    sock = None<br/>    <br/>        if err is not None:<br/>&gt;           raise err<br/><br/>D:\Python38\lib\site-packages\urllib3\util\connection.py:96: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>address = (&#x27;localhost&#x27;, 9000), timeout = None, source_address = None<br/>socket_options = [(6, 1, 1)]<br/><br/>    def create_connection(<br/>        address,<br/>        timeout=socket._GLOBAL_DEFAULT_TIMEOUT,<br/>        source_address=None,<br/>        socket_options=None,<br/>    ):<br/>        &quot;&quot;&quot;Connect to *address* and return the socket object.<br/>    <br/>        Convenience function.  Connect to *address* (a 2-tuple ``(host,<br/>        port)``) and return the socket object.  Passing the optional<br/>        *timeout* parameter will set the timeout on the socket instance<br/>        before attempting to connect.  If no *timeout* is supplied, the<br/>        global default timeout setting returned by :func:`socket.getdefaulttimeout`<br/>        is used.  If *source_address* is set it must be a tuple of (host, port)<br/>        for the socket to bind as a source address before making the connection.<br/>        An host of &#x27;&#x27; or port 0 tells the OS to use the default.<br/>        &quot;&quot;&quot;<br/>    <br/>        host, port = address<br/>        if host.startswith(&quot;[&quot;):<br/>            host = host.strip(&quot;[]&quot;)<br/>        err = None<br/>    <br/>        # Using the value from allowed_gai_family() in the context of getaddrinfo lets<br/>        # us select whether to work with IPv4 DNS records, IPv6 records, or both.<br/>        # The original create_connection function always returns all records.<br/>        family = allowed_gai_family()<br/>    <br/>        try:<br/>            host.encode(&quot;idna&quot;)<br/>        except UnicodeError:<br/>            return six.raise_from(<br/>                LocationParseError(u&quot;&#x27;%s&#x27;, label empty or too long&quot; % host), None<br/>            )<br/>    <br/>        for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):<br/>            af, socktype, proto, canonname, sa = res<br/>            sock = None<br/>            try:<br/>                sock = socket.socket(af, socktype, proto)<br/>    <br/>                # If provided, set socket level options before connecting.<br/>                _set_socket_options(sock, socket_options)<br/>    <br/>                if timeout is not socket._GLOBAL_DEFAULT_TIMEOUT:<br/>                    sock.settimeout(timeout)<br/>                if source_address:<br/>                    sock.bind(source_address)<br/>&gt;               sock.connect(sa)<br/><span class="error">E               ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝，无法连接。</span><br/><br/>D:\Python38\lib\site-packages\urllib3\util\connection.py:86: ConnectionRefusedError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;urllib3.connectionpool.HTTPConnectionPool object at 0x000001A21A480850&gt;<br/>method = &#x27;GET&#x27;, url = &#x27;/sys/logout?page=1&#x27;, body = None<br/>headers = {&#x27;User-Agent&#x27;: &#x27;python-requests/2.25.1&#x27;, &#x27;Accept-Encoding&#x27;: &#x27;gzip, deflate&#x27;, &#x27;Accept&#x27;: &#x27;*/*&#x27;, &#x27;Connection&#x27;: &#x27;keep-alive&#x27;}<br/>retries = Retry(total=0, connect=None, read=False, redirect=None, status=None)<br/>redirect = False, assert_same_host = False<br/>timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None<br/>release_conn = False, chunked = False, body_pos = None<br/>response_kw = {&#x27;decode_content&#x27;: False, &#x27;preload_content&#x27;: False}<br/>parsed_url = Url(scheme=None, auth=None, host=None, port=None, path=&#x27;/sys/logout&#x27;, query=&#x27;page=1&#x27;, fragment=None)<br/>destination_scheme = None, conn = None, release_this_conn = True<br/>http_tunnel_required = False, err = None, clean_exit = False<br/><br/>    def urlopen(<br/>        self,<br/>        method,<br/>        url,<br/>        body=None,<br/>        headers=None,<br/>        retries=None,<br/>        redirect=True,<br/>        assert_same_host=True,<br/>        timeout=_Default,<br/>        pool_timeout=None,<br/>        release_conn=None,<br/>        chunked=False,<br/>        body_pos=None,<br/>        **response_kw<br/>    ):<br/>        &quot;&quot;&quot;<br/>        Get a connection from the pool and perform an HTTP request. This is the<br/>        lowest level call for making a request, so you&#x27;ll need to specify all<br/>        the raw details.<br/>    <br/>        .. note::<br/>    <br/>           More commonly, it&#x27;s appropriate to use a convenience method provided<br/>           by :class:`.RequestMethods`, such as :meth:`request`.<br/>    <br/>        .. note::<br/>    <br/>           `release_conn` will only behave as expected if<br/>           `preload_content=False` because we want to make<br/>           `preload_content=False` the default behaviour someday soon without<br/>           breaking backwards compatibility.<br/>    <br/>        :param method:<br/>            HTTP request method (such as GET, POST, PUT, etc.)<br/>    <br/>        :param url:<br/>            The URL to perform the request on.<br/>    <br/>        :param body:<br/>            Data to send in the request body, either :class:`str`, :class:`bytes`,<br/>            an iterable of :class:`str`/:class:`bytes`, or a file-like object.<br/>    <br/>        :param headers:<br/>            Dictionary of custom headers to send, such as User-Agent,<br/>            If-None-Match, etc. If None, pool headers are used. If provided,<br/>            these headers completely replace any pool-specific headers.<br/>    <br/>        :param retries:<br/>            Configure the number of retries to allow before raising a<br/>            :class:`~urllib3.exceptions.MaxRetryError` exception.<br/>    <br/>            Pass ``None`` to retry until you receive a response. Pass a<br/>            :class:`~urllib3.util.retry.Retry` object for fine-grained control<br/>            over different types of retries.<br/>            Pass an integer number to retry connection errors that many times,<br/>            but no other types of errors. Pass zero to never retry.<br/>    <br/>            If ``False``, then retries are disabled and any exception is raised<br/>            immediately. Also, instead of raising a MaxRetryError on redirects,<br/>            the redirect response will be returned.<br/>    <br/>        :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int.<br/>    <br/>        :param redirect:<br/>            If True, automatically handle redirects (status codes 301, 302,<br/>            303, 307, 308). Each redirect counts as a retry. Disabling retries<br/>            will disable redirect, too.<br/>    <br/>        :param assert_same_host:<br/>            If ``True``, will make sure that the host of the pool requests is<br/>            consistent else will raise HostChangedError. When ``False``, you can<br/>            use the pool on an HTTP proxy and request foreign hosts.<br/>    <br/>        :param timeout:<br/>            If specified, overrides the default timeout for this one<br/>            request. It may be a float (in seconds) or an instance of<br/>            :class:`urllib3.util.Timeout`.<br/>    <br/>        :param pool_timeout:<br/>            If set and the pool is set to block=True, then this method will<br/>            block for ``pool_timeout`` seconds and raise EmptyPoolError if no<br/>            connection is available within the time period.<br/>    <br/>        :param release_conn:<br/>            If False, then the urlopen call will not release the connection<br/>            back into the pool once a response is received (but will release if<br/>            you read the entire contents of the response such as when<br/>            `preload_content=True`). This is useful if you&#x27;re not preloading<br/>            the response&#x27;s content immediately. You will need to call<br/>            ``r.release_conn()`` on the response ``r`` to return the connection<br/>            back into the pool. If None, it takes the value of<br/>            ``response_kw.get(&#x27;preload_content&#x27;, True)``.<br/>    <br/>        :param chunked:<br/>            If True, urllib3 will send the body using chunked transfer<br/>            encoding. Otherwise, urllib3 will send the body using the standard<br/>            content-length form. Defaults to False.<br/>    <br/>        :param int body_pos:<br/>            Position to seek to in file-like body in the event of a retry or<br/>            redirect. Typically this won&#x27;t need to be set because urllib3 will<br/>            auto-populate the value when needed.<br/>    <br/>        :param \\**response_kw:<br/>            Additional parameters are passed to<br/>            :meth:`urllib3.response.HTTPResponse.from_httplib`<br/>        &quot;&quot;&quot;<br/>    <br/>        parsed_url = parse_url(url)<br/>        destination_scheme = parsed_url.scheme<br/>    <br/>        if headers is None:<br/>            headers = self.headers<br/>    <br/>        if not isinstance(retries, Retry):<br/>            retries = Retry.from_int(retries, redirect=redirect, default=self.retries)<br/>    <br/>        if release_conn is None:<br/>            release_conn = response_kw.get(&quot;preload_content&quot;, True)<br/>    <br/>        # Check host<br/>        if assert_same_host and not self.is_same_host(url):<br/>            raise HostChangedError(self, url, retries)<br/>    <br/>        # Ensure that the URL we&#x27;re connecting to is properly encoded<br/>        if url.startswith(&quot;/&quot;):<br/>            url = six.ensure_str(_encode_target(url))<br/>        else:<br/>            url = six.ensure_str(parsed_url.url)<br/>    <br/>        conn = None<br/>    <br/>        # Track whether `conn` needs to be released before<br/>        # returning/raising/recursing. Update this variable if necessary, and<br/>        # leave `release_conn` constant throughout the function. That way, if<br/>        # the function recurses, the original value of `release_conn` will be<br/>        # passed down into the recursive call, and its value will be respected.<br/>        #<br/>        # See issue #651 [1] for details.<br/>        #<br/>        # [1] &lt;https://github.com/urllib3/urllib3/issues/651&gt;<br/>        release_this_conn = release_conn<br/>    <br/>        http_tunnel_required = connection_requires_http_tunnel(<br/>            self.proxy, self.proxy_config, destination_scheme<br/>        )<br/>    <br/>        # Merge the proxy headers. Only done when not using HTTP CONNECT. We<br/>        # have to copy the headers dict so we can safely change it without those<br/>        # changes being reflected in anyone else&#x27;s copy.<br/>        if not http_tunnel_required:<br/>            headers = headers.copy()<br/>            headers.update(self.proxy_headers)<br/>    <br/>        # Must keep the exception bound to a separate variable or else Python 3<br/>        # complains about UnboundLocalError.<br/>        err = None<br/>    <br/>        # Keep track of whether we cleanly exited the except block. This<br/>        # ensures we do proper cleanup in finally.<br/>        clean_exit = False<br/>    <br/>        # Rewind body position, if needed. Record current position<br/>        # for future rewinds in the event of a redirect/retry.<br/>        body_pos = set_file_position(body, body_pos)<br/>    <br/>        try:<br/>            # Request a connection from the queue.<br/>            timeout_obj = self._get_timeout(timeout)<br/>            conn = self._get_conn(timeout=pool_timeout)<br/>    <br/>            conn.timeout = timeout_obj.connect_timeout<br/>    <br/>            is_new_proxy_conn = self.proxy is not None and not getattr(<br/>                conn, &quot;sock&quot;, None<br/>            )<br/>            if is_new_proxy_conn and http_tunnel_required:<br/>                self._prepare_proxy(conn)<br/>    <br/>            # Make the request on the httplib connection object.<br/>&gt;           httplib_response = self._make_request(<br/>                conn,<br/>                method,<br/>                url,<br/>                timeout=timeout_obj,<br/>                body=body,<br/>                headers=headers,<br/>                chunked=chunked,<br/>            )<br/><br/>D:\Python38\lib\site-packages\urllib3\connectionpool.py:699: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib3.connectionpool.HTTPConnectionPool object at 0x000001A21A480850&gt;<br/>conn = &lt;urllib3.connection.HTTPConnection object at 0x000001A21B1902E0&gt;<br/>method = &#x27;GET&#x27;, url = &#x27;/sys/logout?page=1&#x27;<br/>timeout = Timeout(connect=None, read=None, total=None), chunked = False<br/>httplib_request_kw = {&#x27;body&#x27;: None, &#x27;headers&#x27;: {&#x27;User-Agent&#x27;: &#x27;python-requests/2.25.1&#x27;, &#x27;Accept-Encoding&#x27;: &#x27;gzip, deflate&#x27;, &#x27;Accept&#x27;: &#x27;*/*&#x27;, &#x27;Connection&#x27;: &#x27;keep-alive&#x27;}}<br/>timeout_obj = Timeout(connect=None, read=None, total=None)<br/><br/>    def _make_request(<br/>        self, conn, method, url, timeout=_Default, chunked=False, **httplib_request_kw<br/>    ):<br/>        &quot;&quot;&quot;<br/>        Perform a request on a given urllib connection object taken from our<br/>        pool.<br/>    <br/>        :param conn:<br/>            a connection from one of our connection pools<br/>    <br/>        :param timeout:<br/>            Socket timeout in seconds for the request. This can be a<br/>            float or integer, which will set the same timeout value for<br/>            the socket connect and the socket read, or an instance of<br/>            :class:`urllib3.util.Timeout`, which gives you more fine-grained<br/>            control over your timeouts.<br/>        &quot;&quot;&quot;<br/>        self.num_requests += 1<br/>    <br/>        timeout_obj = self._get_timeout(timeout)<br/>        timeout_obj.start_connect()<br/>        conn.timeout = timeout_obj.connect_timeout<br/>    <br/>        # Trigger any extra validation we need to do.<br/>        try:<br/>            self._validate_conn(conn)<br/>        except (SocketTimeout, BaseSSLError) as e:<br/>            # Py2 raises this as a BaseSSLError, Py3 raises it as socket timeout.<br/>            self._raise_timeout(err=e, url=url, timeout_value=conn.timeout)<br/>            raise<br/>    <br/>        # conn.request() calls http.client.*.request, not the method in<br/>        # urllib3.request. It also calls makefile (recv) on the socket.<br/>        try:<br/>            if chunked:<br/>                conn.request_chunked(method, url, **httplib_request_kw)<br/>            else:<br/>&gt;               conn.request(method, url, **httplib_request_kw)<br/><br/>D:\Python38\lib\site-packages\urllib3\connectionpool.py:394: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib3.connection.HTTPConnection object at 0x000001A21B1902E0&gt;<br/>method = &#x27;GET&#x27;, url = &#x27;/sys/logout?page=1&#x27;, body = None<br/>headers = {&#x27;User-Agent&#x27;: &#x27;python-requests/2.25.1&#x27;, &#x27;Accept-Encoding&#x27;: &#x27;gzip, deflate&#x27;, &#x27;Accept&#x27;: &#x27;*/*&#x27;, &#x27;Connection&#x27;: &#x27;keep-alive&#x27;}<br/><br/>    def request(self, method, url, body=None, headers=None):<br/>        if headers is None:<br/>            headers = {}<br/>        else:<br/>            # Avoid modifying the headers passed into .request()<br/>            headers = headers.copy()<br/>        if &quot;user-agent&quot; not in (six.ensure_str(k.lower()) for k in headers):<br/>            headers[&quot;User-Agent&quot;] = _get_default_user_agent()<br/>&gt;       super(HTTPConnection, self).request(method, url, body=body, headers=headers)<br/><br/>D:\Python38\lib\site-packages\urllib3\connection.py:234: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib3.connection.HTTPConnection object at 0x000001A21B1902E0&gt;<br/>method = &#x27;GET&#x27;, url = &#x27;/sys/logout?page=1&#x27;, body = None<br/>headers = {&#x27;User-Agent&#x27;: &#x27;python-requests/2.25.1&#x27;, &#x27;Accept-Encoding&#x27;: &#x27;gzip, deflate&#x27;, &#x27;Accept&#x27;: &#x27;*/*&#x27;, &#x27;Connection&#x27;: &#x27;keep-alive&#x27;}<br/><br/>    def request(self, method, url, body=None, headers={}, *,<br/>                encode_chunked=False):<br/>        &quot;&quot;&quot;Send a complete request to the server.&quot;&quot;&quot;<br/>&gt;       self._send_request(method, url, body, headers, encode_chunked)<br/><br/>D:\Python38\lib\http\client.py:1255: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib3.connection.HTTPConnection object at 0x000001A21B1902E0&gt;<br/>method = &#x27;GET&#x27;, url = &#x27;/sys/logout?page=1&#x27;, body = None<br/>headers = {&#x27;User-Agent&#x27;: &#x27;python-requests/2.25.1&#x27;, &#x27;Accept-Encoding&#x27;: &#x27;gzip, deflate&#x27;, &#x27;Accept&#x27;: &#x27;*/*&#x27;, &#x27;Connection&#x27;: &#x27;keep-alive&#x27;}<br/>encode_chunked = False<br/><br/>    def _send_request(self, method, url, body, headers, encode_chunked):<br/>        # Honor explicitly requested Host: and Accept-Encoding: headers.<br/>        header_names = frozenset(k.lower() for k in headers)<br/>        skips = {}<br/>        if &#x27;host&#x27; in header_names:<br/>            skips[&#x27;skip_host&#x27;] = 1<br/>        if &#x27;accept-encoding&#x27; in header_names:<br/>            skips[&#x27;skip_accept_encoding&#x27;] = 1<br/>    <br/>        self.putrequest(method, url, **skips)<br/>    <br/>        # chunked encoding will happen if HTTP/1.1 is used and either<br/>        # the caller passes encode_chunked=True or the following<br/>        # conditions hold:<br/>        # 1. content-length has not been explicitly set<br/>        # 2. the body is a file or iterable, but not a str or bytes-like<br/>        # 3. Transfer-Encoding has NOT been explicitly set by the caller<br/>    <br/>        if &#x27;content-length&#x27; not in header_names:<br/>            # only chunk body if not explicitly set for backwards<br/>            # compatibility, assuming the client code is already handling the<br/>            # chunking<br/>            if &#x27;transfer-encoding&#x27; not in header_names:<br/>                # if content-length cannot be automatically determined, fall<br/>                # back to chunked encoding<br/>                encode_chunked = False<br/>                content_length = self._get_content_length(body, method)<br/>                if content_length is None:<br/>                    if body is not None:<br/>                        if self.debuglevel &gt; 0:<br/>                            print(&#x27;Unable to determine size of %r&#x27; % body)<br/>                        encode_chunked = True<br/>                        self.putheader(&#x27;Transfer-Encoding&#x27;, &#x27;chunked&#x27;)<br/>                else:<br/>                    self.putheader(&#x27;Content-Length&#x27;, str(content_length))<br/>        else:<br/>            encode_chunked = False<br/>    <br/>        for hdr, value in headers.items():<br/>            self.putheader(hdr, value)<br/>        if isinstance(body, str):<br/>            # RFC 2616 Section 3.7.1 says that text default has a<br/>            # default charset of iso-8859-1.<br/>            body = _encode(body, &#x27;body&#x27;)<br/>&gt;       self.endheaders(body, encode_chunked=encode_chunked)<br/><br/>D:\Python38\lib\http\client.py:1301: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib3.connection.HTTPConnection object at 0x000001A21B1902E0&gt;<br/>message_body = None<br/><br/>    def endheaders(self, message_body=None, *, encode_chunked=False):<br/>        &quot;&quot;&quot;Indicate that the last header line has been sent to the server.<br/>    <br/>        This method sends the request to the server.  The optional message_body<br/>        argument can be used to pass a message body associated with the<br/>        request.<br/>        &quot;&quot;&quot;<br/>        if self.__state == _CS_REQ_STARTED:<br/>            self.__state = _CS_REQ_SENT<br/>        else:<br/>            raise CannotSendHeader()<br/>&gt;       self._send_output(message_body, encode_chunked=encode_chunked)<br/><br/>D:\Python38\lib\http\client.py:1250: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib3.connection.HTTPConnection object at 0x000001A21B1902E0&gt;<br/>message_body = None, encode_chunked = False<br/><br/>    def _send_output(self, message_body=None, encode_chunked=False):<br/>        &quot;&quot;&quot;Send the currently buffered request and clear the buffer.<br/>    <br/>        Appends an extra \\r\\n to the buffer.<br/>        A message_body may be specified, to be appended to the request.<br/>        &quot;&quot;&quot;<br/>        self._buffer.extend((b&quot;&quot;, b&quot;&quot;))<br/>        msg = b&quot;\r\n&quot;.join(self._buffer)<br/>        del self._buffer[:]<br/>&gt;       self.send(msg)<br/><br/>D:\Python38\lib\http\client.py:1010: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib3.connection.HTTPConnection object at 0x000001A21B1902E0&gt;<br/>data = b&#x27;GET /sys/logout?page=1 HTTP/1.1\r\nHost: localhost:9000\r\nUser-Agent: python-requests/2.25.1\r\nAccept-Encoding: gzip, deflate\r\nAccept: */*\r\nConnection: keep-alive\r\n\r\n&#x27;<br/><br/>    def send(self, data):<br/>        &quot;&quot;&quot;Send `data&#x27; to the server.<br/>        ``data`` can be a string object, a bytes object, an array object, a<br/>        file-like object that supports a .read() method, or an iterable object.<br/>        &quot;&quot;&quot;<br/>    <br/>        if self.sock is None:<br/>            if self.auto_open:<br/>&gt;               self.connect()<br/><br/>D:\Python38\lib\http\client.py:950: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib3.connection.HTTPConnection object at 0x000001A21B1902E0&gt;<br/><br/>    def connect(self):<br/>&gt;       conn = self._new_conn()<br/><br/>D:\Python38\lib\site-packages\urllib3\connection.py:200: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib3.connection.HTTPConnection object at 0x000001A21B1902E0&gt;<br/><br/>    def _new_conn(self):<br/>        &quot;&quot;&quot;Establish a socket connection and set nodelay settings on it.<br/>    <br/>        :return: New socket connection.<br/>        &quot;&quot;&quot;<br/>        extra_kw = {}<br/>        if self.source_address:<br/>            extra_kw[&quot;source_address&quot;] = self.source_address<br/>    <br/>        if self.socket_options:<br/>            extra_kw[&quot;socket_options&quot;] = self.socket_options<br/>    <br/>        try:<br/>            conn = connection.create_connection(<br/>                (self._dns_host, self.port), self.timeout, **extra_kw<br/>            )<br/>    <br/>        except SocketTimeout:<br/>            raise ConnectTimeoutError(<br/>                self,<br/>                &quot;Connection to %s timed out. (connect timeout=%s)&quot;<br/>                % (self.host, self.timeout),<br/>            )<br/>    <br/>        except SocketError as e:<br/>&gt;           raise NewConnectionError(<br/>                self, &quot;Failed to establish a new connection: %s&quot; % e<br/>            )<br/><span class="error">E           urllib3.exceptions.NewConnectionError: &lt;urllib3.connection.HTTPConnection object at 0x000001A21B1902E0&gt;: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝，无法连接。</span><br/><br/>D:\Python38\lib\site-packages\urllib3\connection.py:181: NewConnectionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;requests.adapters.HTTPAdapter object at 0x000001A21AF49160&gt;<br/>request = &lt;PreparedRequest [GET]&gt;, stream = False<br/>timeout = Timeout(connect=None, read=None, total=None), verify = True<br/>cert = None, proxies = OrderedDict()<br/><br/>    def send(self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None):<br/>        &quot;&quot;&quot;Sends PreparedRequest object. Returns Response object.<br/>    <br/>        :param request: The :class:`PreparedRequest &lt;PreparedRequest&gt;` being sent.<br/>        :param stream: (optional) Whether to stream the request content.<br/>        :param timeout: (optional) How long to wait for the server to send<br/>            data before giving up, as a float, or a :ref:`(connect timeout,<br/>            read timeout) &lt;timeouts&gt;` tuple.<br/>        :type timeout: float or tuple or urllib3 Timeout object<br/>        :param verify: (optional) Either a boolean, in which case it controls whether<br/>            we verify the server&#x27;s TLS certificate, or a string, in which case it<br/>            must be a path to a CA bundle to use<br/>        :param cert: (optional) Any user-provided SSL certificate to be trusted.<br/>        :param proxies: (optional) The proxies dictionary to apply to the request.<br/>        :rtype: requests.Response<br/>        &quot;&quot;&quot;<br/>    <br/>        try:<br/>            conn = self.get_connection(request.url, proxies)<br/>        except LocationValueError as e:<br/>            raise InvalidURL(e, request=request)<br/>    <br/>        self.cert_verify(conn, request.url, verify, cert)<br/>        url = self.request_url(request, proxies)<br/>        self.add_headers(request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies)<br/>    <br/>        chunked = not (request.body is None or &#x27;Content-Length&#x27; in request.headers)<br/>    <br/>        if isinstance(timeout, tuple):<br/>            try:<br/>                connect, read = timeout<br/>                timeout = TimeoutSauce(connect=connect, read=read)<br/>            except ValueError as e:<br/>                # this may raise a string formatting error.<br/>                err = (&quot;Invalid timeout {}. Pass a (connect, read) &quot;<br/>                       &quot;timeout tuple, or a single float to set &quot;<br/>                       &quot;both timeouts to the same value&quot;.format(timeout))<br/>                raise ValueError(err)<br/>        elif isinstance(timeout, TimeoutSauce):<br/>            pass<br/>        else:<br/>            timeout = TimeoutSauce(connect=timeout, read=timeout)<br/>    <br/>        try:<br/>            if not chunked:<br/>&gt;               resp = conn.urlopen(<br/>                    method=request.method,<br/>                    url=url,<br/>                    body=request.body,<br/>                    headers=request.headers,<br/>                    redirect=False,<br/>                    assert_same_host=False,<br/>                    preload_content=False,<br/>                    decode_content=False,<br/>                    retries=self.max_retries,<br/>                    timeout=timeout<br/>                )<br/><br/>D:\Python38\lib\site-packages\requests\adapters.py:439: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib3.connectionpool.HTTPConnectionPool object at 0x000001A21A480850&gt;<br/>method = &#x27;GET&#x27;, url = &#x27;/sys/logout?page=1&#x27;, body = None<br/>headers = {&#x27;User-Agent&#x27;: &#x27;python-requests/2.25.1&#x27;, &#x27;Accept-Encoding&#x27;: &#x27;gzip, deflate&#x27;, &#x27;Accept&#x27;: &#x27;*/*&#x27;, &#x27;Connection&#x27;: &#x27;keep-alive&#x27;}<br/>retries = Retry(total=0, connect=None, read=False, redirect=None, status=None)<br/>redirect = False, assert_same_host = False<br/>timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None<br/>release_conn = False, chunked = False, body_pos = None<br/>response_kw = {&#x27;decode_content&#x27;: False, &#x27;preload_content&#x27;: False}<br/>parsed_url = Url(scheme=None, auth=None, host=None, port=None, path=&#x27;/sys/logout&#x27;, query=&#x27;page=1&#x27;, fragment=None)<br/>destination_scheme = None, conn = None, release_this_conn = True<br/>http_tunnel_required = False, err = None, clean_exit = False<br/><br/>    def urlopen(<br/>        self,<br/>        method,<br/>        url,<br/>        body=None,<br/>        headers=None,<br/>        retries=None,<br/>        redirect=True,<br/>        assert_same_host=True,<br/>        timeout=_Default,<br/>        pool_timeout=None,<br/>        release_conn=None,<br/>        chunked=False,<br/>        body_pos=None,<br/>        **response_kw<br/>    ):<br/>        &quot;&quot;&quot;<br/>        Get a connection from the pool and perform an HTTP request. This is the<br/>        lowest level call for making a request, so you&#x27;ll need to specify all<br/>        the raw details.<br/>    <br/>        .. note::<br/>    <br/>           More commonly, it&#x27;s appropriate to use a convenience method provided<br/>           by :class:`.RequestMethods`, such as :meth:`request`.<br/>    <br/>        .. note::<br/>    <br/>           `release_conn` will only behave as expected if<br/>           `preload_content=False` because we want to make<br/>           `preload_content=False` the default behaviour someday soon without<br/>           breaking backwards compatibility.<br/>    <br/>        :param method:<br/>            HTTP request method (such as GET, POST, PUT, etc.)<br/>    <br/>        :param url:<br/>            The URL to perform the request on.<br/>    <br/>        :param body:<br/>            Data to send in the request body, either :class:`str`, :class:`bytes`,<br/>            an iterable of :class:`str`/:class:`bytes`, or a file-like object.<br/>    <br/>        :param headers:<br/>            Dictionary of custom headers to send, such as User-Agent,<br/>            If-None-Match, etc. If None, pool headers are used. If provided,<br/>            these headers completely replace any pool-specific headers.<br/>    <br/>        :param retries:<br/>            Configure the number of retries to allow before raising a<br/>            :class:`~urllib3.exceptions.MaxRetryError` exception.<br/>    <br/>            Pass ``None`` to retry until you receive a response. Pass a<br/>            :class:`~urllib3.util.retry.Retry` object for fine-grained control<br/>            over different types of retries.<br/>            Pass an integer number to retry connection errors that many times,<br/>            but no other types of errors. Pass zero to never retry.<br/>    <br/>            If ``False``, then retries are disabled and any exception is raised<br/>            immediately. Also, instead of raising a MaxRetryError on redirects,<br/>            the redirect response will be returned.<br/>    <br/>        :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int.<br/>    <br/>        :param redirect:<br/>            If True, automatically handle redirects (status codes 301, 302,<br/>            303, 307, 308). Each redirect counts as a retry. Disabling retries<br/>            will disable redirect, too.<br/>    <br/>        :param assert_same_host:<br/>            If ``True``, will make sure that the host of the pool requests is<br/>            consistent else will raise HostChangedError. When ``False``, you can<br/>            use the pool on an HTTP proxy and request foreign hosts.<br/>    <br/>        :param timeout:<br/>            If specified, overrides the default timeout for this one<br/>            request. It may be a float (in seconds) or an instance of<br/>            :class:`urllib3.util.Timeout`.<br/>    <br/>        :param pool_timeout:<br/>            If set and the pool is set to block=True, then this method will<br/>            block for ``pool_timeout`` seconds and raise EmptyPoolError if no<br/>            connection is available within the time period.<br/>    <br/>        :param release_conn:<br/>            If False, then the urlopen call will not release the connection<br/>            back into the pool once a response is received (but will release if<br/>            you read the entire contents of the response such as when<br/>            `preload_content=True`). This is useful if you&#x27;re not preloading<br/>            the response&#x27;s content immediately. You will need to call<br/>            ``r.release_conn()`` on the response ``r`` to return the connection<br/>            back into the pool. If None, it takes the value of<br/>            ``response_kw.get(&#x27;preload_content&#x27;, True)``.<br/>    <br/>        :param chunked:<br/>            If True, urllib3 will send the body using chunked transfer<br/>            encoding. Otherwise, urllib3 will send the body using the standard<br/>            content-length form. Defaults to False.<br/>    <br/>        :param int body_pos:<br/>            Position to seek to in file-like body in the event of a retry or<br/>            redirect. Typically this won&#x27;t need to be set because urllib3 will<br/>            auto-populate the value when needed.<br/>    <br/>        :param \\**response_kw:<br/>            Additional parameters are passed to<br/>            :meth:`urllib3.response.HTTPResponse.from_httplib`<br/>        &quot;&quot;&quot;<br/>    <br/>        parsed_url = parse_url(url)<br/>        destination_scheme = parsed_url.scheme<br/>    <br/>        if headers is None:<br/>            headers = self.headers<br/>    <br/>        if not isinstance(retries, Retry):<br/>            retries = Retry.from_int(retries, redirect=redirect, default=self.retries)<br/>    <br/>        if release_conn is None:<br/>            release_conn = response_kw.get(&quot;preload_content&quot;, True)<br/>    <br/>        # Check host<br/>        if assert_same_host and not self.is_same_host(url):<br/>            raise HostChangedError(self, url, retries)<br/>    <br/>        # Ensure that the URL we&#x27;re connecting to is properly encoded<br/>        if url.startswith(&quot;/&quot;):<br/>            url = six.ensure_str(_encode_target(url))<br/>        else:<br/>            url = six.ensure_str(parsed_url.url)<br/>    <br/>        conn = None<br/>    <br/>        # Track whether `conn` needs to be released before<br/>        # returning/raising/recursing. Update this variable if necessary, and<br/>        # leave `release_conn` constant throughout the function. That way, if<br/>        # the function recurses, the original value of `release_conn` will be<br/>        # passed down into the recursive call, and its value will be respected.<br/>        #<br/>        # See issue #651 [1] for details.<br/>        #<br/>        # [1] &lt;https://github.com/urllib3/urllib3/issues/651&gt;<br/>        release_this_conn = release_conn<br/>    <br/>        http_tunnel_required = connection_requires_http_tunnel(<br/>            self.proxy, self.proxy_config, destination_scheme<br/>        )<br/>    <br/>        # Merge the proxy headers. Only done when not using HTTP CONNECT. We<br/>        # have to copy the headers dict so we can safely change it without those<br/>        # changes being reflected in anyone else&#x27;s copy.<br/>        if not http_tunnel_required:<br/>            headers = headers.copy()<br/>            headers.update(self.proxy_headers)<br/>    <br/>        # Must keep the exception bound to a separate variable or else Python 3<br/>        # complains about UnboundLocalError.<br/>        err = None<br/>    <br/>        # Keep track of whether we cleanly exited the except block. This<br/>        # ensures we do proper cleanup in finally.<br/>        clean_exit = False<br/>    <br/>        # Rewind body position, if needed. Record current position<br/>        # for future rewinds in the event of a redirect/retry.<br/>        body_pos = set_file_position(body, body_pos)<br/>    <br/>        try:<br/>            # Request a connection from the queue.<br/>            timeout_obj = self._get_timeout(timeout)<br/>            conn = self._get_conn(timeout=pool_timeout)<br/>    <br/>            conn.timeout = timeout_obj.connect_timeout<br/>    <br/>            is_new_proxy_conn = self.proxy is not None and not getattr(<br/>                conn, &quot;sock&quot;, None<br/>            )<br/>            if is_new_proxy_conn and http_tunnel_required:<br/>                self._prepare_proxy(conn)<br/>    <br/>            # Make the request on the httplib connection object.<br/>            httplib_response = self._make_request(<br/>                conn,<br/>                method,<br/>                url,<br/>                timeout=timeout_obj,<br/>                body=body,<br/>                headers=headers,<br/>                chunked=chunked,<br/>            )<br/>    <br/>            # If we&#x27;re going to release the connection in ``finally:``, then<br/>            # the response doesn&#x27;t need to know about the connection. Otherwise<br/>            # it will also try to release it and we&#x27;ll have a double-release<br/>            # mess.<br/>            response_conn = conn if not release_conn else None<br/>    <br/>            # Pass method to Response for length checking<br/>            response_kw[&quot;request_method&quot;] = method<br/>    <br/>            # Import httplib&#x27;s response into our own wrapper object<br/>            response = self.ResponseCls.from_httplib(<br/>                httplib_response,<br/>                pool=self,<br/>                connection=response_conn,<br/>                retries=retries,<br/>                **response_kw<br/>            )<br/>    <br/>            # Everything went great!<br/>            clean_exit = True<br/>    <br/>        except EmptyPoolError:<br/>            # Didn&#x27;t get a connection from the pool, no need to clean up<br/>            clean_exit = True<br/>            release_this_conn = False<br/>            raise<br/>    <br/>        except (<br/>            TimeoutError,<br/>            HTTPException,<br/>            SocketError,<br/>            ProtocolError,<br/>            BaseSSLError,<br/>            SSLError,<br/>            CertificateError,<br/>        ) as e:<br/>            # Discard the connection for these exceptions. It will be<br/>            # replaced during the next _get_conn() call.<br/>            clean_exit = False<br/>            if isinstance(e, (BaseSSLError, CertificateError)):<br/>                e = SSLError(e)<br/>            elif isinstance(e, (SocketError, NewConnectionError)) and self.proxy:<br/>                e = ProxyError(&quot;Cannot connect to proxy.&quot;, e)<br/>            elif isinstance(e, (SocketError, HTTPException)):<br/>                e = ProtocolError(&quot;Connection aborted.&quot;, e)<br/>    <br/>&gt;           retries = retries.increment(<br/>                method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]<br/>            )<br/><br/>D:\Python38\lib\site-packages\urllib3\connectionpool.py:755: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = Retry(total=0, connect=None, read=False, redirect=None, status=None)<br/>method = &#x27;GET&#x27;, url = &#x27;/sys/logout?page=1&#x27;, response = None<br/>error = NewConnectionError(&#x27;&lt;urllib3.connection.HTTPConnection object at 0x000001A21B1902E0&gt;: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝，无法连接。&#x27;)<br/>_pool = &lt;urllib3.connectionpool.HTTPConnectionPool object at 0x000001A21A480850&gt;<br/>_stacktrace = &lt;traceback object at 0x000001A21B00C580&gt;<br/><br/>    def increment(<br/>        self,<br/>        method=None,<br/>        url=None,<br/>        response=None,<br/>        error=None,<br/>        _pool=None,<br/>        _stacktrace=None,<br/>    ):<br/>        &quot;&quot;&quot;Return a new Retry object with incremented retry counters.<br/>    <br/>        :param response: A response object, or None, if the server did not<br/>            return a response.<br/>        :type response: :class:`~urllib3.response.HTTPResponse`<br/>        :param Exception error: An error encountered during the request, or<br/>            None if the response was received successfully.<br/>    <br/>        :return: A new ``Retry`` object.<br/>        &quot;&quot;&quot;<br/>        if self.total is False and error:<br/>            # Disabled, indicate to re-raise the error.<br/>            raise six.reraise(type(error), error, _stacktrace)<br/>    <br/>        total = self.total<br/>        if total is not None:<br/>            total -= 1<br/>    <br/>        connect = self.connect<br/>        read = self.read<br/>        redirect = self.redirect<br/>        status_count = self.status<br/>        other = self.other<br/>        cause = &quot;unknown&quot;<br/>        status = None<br/>        redirect_location = None<br/>    <br/>        if error and self._is_connection_error(error):<br/>            # Connect retry?<br/>            if connect is False:<br/>                raise six.reraise(type(error), error, _stacktrace)<br/>            elif connect is not None:<br/>                connect -= 1<br/>    <br/>        elif error and self._is_read_error(error):<br/>            # Read retry?<br/>            if read is False or not self._is_method_retryable(method):<br/>                raise six.reraise(type(error), error, _stacktrace)<br/>            elif read is not None:<br/>                read -= 1<br/>    <br/>        elif error:<br/>            # Other retry?<br/>            if other is not None:<br/>                other -= 1<br/>    <br/>        elif response and response.get_redirect_location():<br/>            # Redirect retry?<br/>            if redirect is not None:<br/>                redirect -= 1<br/>            cause = &quot;too many redirects&quot;<br/>            redirect_location = response.get_redirect_location()<br/>            status = response.status<br/>    <br/>        else:<br/>            # Incrementing because of a server error like a 500 in<br/>            # status_forcelist and the given method is in the allowed_methods<br/>            cause = ResponseError.GENERIC_ERROR<br/>            if response and response.status:<br/>                if status_count is not None:<br/>                    status_count -= 1<br/>                cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status)<br/>                status = response.status<br/>    <br/>        history = self.history + (<br/>            RequestHistory(method, url, error, status, redirect_location),<br/>        )<br/>    <br/>        new_retry = self.new(<br/>            total=total,<br/>            connect=connect,<br/>            read=read,<br/>            redirect=redirect,<br/>            status=status_count,<br/>            other=other,<br/>            history=history,<br/>        )<br/>    <br/>        if new_retry.is_exhausted():<br/>&gt;           raise MaxRetryError(_pool, url, error or ResponseError(cause))<br/><span class="error">E           urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host=&#x27;localhost&#x27;, port=9000): Max retries exceeded with url: /sys/logout?page=1 (Caused by NewConnectionError(&#x27;&lt;urllib3.connection.HTTPConnection object at 0x000001A21B1902E0&gt;: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝，无法连接。&#x27;))</span><br/><br/>D:\Python38\lib\site-packages\urllib3\util\retry.py:574: MaxRetryError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>init = &lt;api.request.Reque object at 0x000001A21AF36BE0&gt;<br/><br/>    def test_003(init):<br/>        data = loadData.getApiInfo(&#x27;logout&#x27;)<br/>        # 获取接口数据中断言<br/>        asst = data.get(&#x27;asst&#x27;)<br/>        # 将接口参数给Reque，然后由send_request发送请求<br/>&gt;       res = init.send_request(data)<br/><br/>test_shou_user.py:47: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/>..\api\request.py:90: in send_request<br/>    self.response = self.session.request(method=method,url=url,params=params,headers=headers)<br/>D:\Python38\lib\site-packages\requests\sessions.py:542: in request<br/>    resp = self.send(prep, **send_kwargs)<br/>D:\Python38\lib\site-packages\requests\sessions.py:655: in send<br/>    r = adapter.send(request, **kwargs)<br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;requests.adapters.HTTPAdapter object at 0x000001A21AF49160&gt;<br/>request = &lt;PreparedRequest [GET]&gt;, stream = False<br/>timeout = Timeout(connect=None, read=None, total=None), verify = True<br/>cert = None, proxies = OrderedDict()<br/><br/>    def send(self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None):<br/>        &quot;&quot;&quot;Sends PreparedRequest object. Returns Response object.<br/>    <br/>        :param request: The :class:`PreparedRequest &lt;PreparedRequest&gt;` being sent.<br/>        :param stream: (optional) Whether to stream the request content.<br/>        :param timeout: (optional) How long to wait for the server to send<br/>            data before giving up, as a float, or a :ref:`(connect timeout,<br/>            read timeout) &lt;timeouts&gt;` tuple.<br/>        :type timeout: float or tuple or urllib3 Timeout object<br/>        :param verify: (optional) Either a boolean, in which case it controls whether<br/>            we verify the server&#x27;s TLS certificate, or a string, in which case it<br/>            must be a path to a CA bundle to use<br/>        :param cert: (optional) Any user-provided SSL certificate to be trusted.<br/>        :param proxies: (optional) The proxies dictionary to apply to the request.<br/>        :rtype: requests.Response<br/>        &quot;&quot;&quot;<br/>    <br/>        try:<br/>            conn = self.get_connection(request.url, proxies)<br/>        except LocationValueError as e:<br/>            raise InvalidURL(e, request=request)<br/>    <br/>        self.cert_verify(conn, request.url, verify, cert)<br/>        url = self.request_url(request, proxies)<br/>        self.add_headers(request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies)<br/>    <br/>        chunked = not (request.body is None or &#x27;Content-Length&#x27; in request.headers)<br/>    <br/>        if isinstance(timeout, tuple):<br/>            try:<br/>                connect, read = timeout<br/>                timeout = TimeoutSauce(connect=connect, read=read)<br/>            except ValueError as e:<br/>                # this may raise a string formatting error.<br/>                err = (&quot;Invalid timeout {}. Pass a (connect, read) &quot;<br/>                       &quot;timeout tuple, or a single float to set &quot;<br/>                       &quot;both timeouts to the same value&quot;.format(timeout))<br/>                raise ValueError(err)<br/>        elif isinstance(timeout, TimeoutSauce):<br/>            pass<br/>        else:<br/>            timeout = TimeoutSauce(connect=timeout, read=timeout)<br/>    <br/>        try:<br/>            if not chunked:<br/>                resp = conn.urlopen(<br/>                    method=request.method,<br/>                    url=url,<br/>                    body=request.body,<br/>                    headers=request.headers,<br/>                    redirect=False,<br/>                    assert_same_host=False,<br/>                    preload_content=False,<br/>                    decode_content=False,<br/>                    retries=self.max_retries,<br/>                    timeout=timeout<br/>                )<br/>    <br/>            # Send the request.<br/>            else:<br/>                if hasattr(conn, &#x27;proxy_pool&#x27;):<br/>                    conn = conn.proxy_pool<br/>    <br/>                low_conn = conn._get_conn(timeout=DEFAULT_POOL_TIMEOUT)<br/>    <br/>                try:<br/>                    low_conn.putrequest(request.method,<br/>                                        url,<br/>                                        skip_accept_encoding=True)<br/>    <br/>                    for header, value in request.headers.items():<br/>                        low_conn.putheader(header, value)<br/>    <br/>                    low_conn.endheaders()<br/>    <br/>                    for i in request.body:<br/>                        low_conn.send(hex(len(i))[2:].encode(&#x27;utf-8&#x27;))<br/>                        low_conn.send(b&#x27;\r\n&#x27;)<br/>                        low_conn.send(i)<br/>                        low_conn.send(b&#x27;\r\n&#x27;)<br/>                    low_conn.send(b&#x27;0\r\n\r\n&#x27;)<br/>    <br/>                    # Receive the response from the server<br/>                    try:<br/>                        # For Python 2.7, use buffering of HTTP responses<br/>                        r = low_conn.getresponse(buffering=True)<br/>                    except TypeError:<br/>                        # For compatibility with Python 3.3+<br/>                        r = low_conn.getresponse()<br/>    <br/>                    resp = HTTPResponse.from_httplib(<br/>                        r,<br/>                        pool=conn,<br/>                        connection=low_conn,<br/>                        preload_content=False,<br/>                        decode_content=False<br/>                    )<br/>                except:<br/>                    # If we hit any problems here, clean up the connection.<br/>                    # Then, reraise so that we can handle the actual exception.<br/>                    low_conn.close()<br/>                    raise<br/>    <br/>        except (ProtocolError, socket.error) as err:<br/>            raise ConnectionError(err, request=request)<br/>    <br/>        except MaxRetryError as e:<br/>            if isinstance(e.reason, ConnectTimeoutError):<br/>                # TODO: Remove this in 3.0.0: see #2811<br/>                if not isinstance(e.reason, NewConnectionError):<br/>                    raise ConnectTimeout(e, request=request)<br/>    <br/>            if isinstance(e.reason, ResponseError):<br/>                raise RetryError(e, request=request)<br/>    <br/>            if isinstance(e.reason, _ProxyError):<br/>                raise ProxyError(e, request=request)<br/>    <br/>            if isinstance(e.reason, _SSLError):<br/>                # This branch is for urllib3 v1.22 and later.<br/>                raise SSLError(e, request=request)<br/>    <br/>&gt;           raise ConnectionError(e, request=request)<br/><span class="error">E           requests.exceptions.ConnectionError: HTTPConnectionPool(host=&#x27;localhost&#x27;, port=9000): Max retries exceeded with url: /sys/logout?page=1 (Caused by NewConnectionError(&#x27;&lt;urllib3.connection.HTTPConnection object at 0x000001A21B1902E0&gt;: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝，无法连接。&#x27;))</span><br/><br/>D:\Python38\lib\site-packages\requests\adapters.py:516: ConnectionError<br/> ------------------------------Captured stderr call------------------------------ <br/>2021-09-10 15:29:25,906  request send_request[44]  INFO ：get url http://localhost:9000/sys/logout
2021-09-10 15:29:25,906  request send_request[65]  INFO ：get params {&#x27;page&#x27;: 1}
2021-09-10 15:29:25,907  request send_request[73]  INFO ：get method get
<br/> -------------------------------Captured log call-------------------------------- <br/>INFO     tools.loggingModule:request.py:44 get url http://localhost:9000/sys/logout
INFO     tools.loggingModule:request.py:65 get params {&#x27;page&#x27;: 1}
INFO     tools.loggingModule:request.py:73 get method get<br/></div></td></tr></tbody></table></body></html>